RowLeave RowEnter中断处理
现象:Cell编辑模式,点击其他行的Cell时会做Check(RowLeave),check通过后,会把所点的那个cell所在的行相关的内容显示到另一个MultiRow中。要求:一个Cell的内容改变之后,点击其他行的Cell时会做Check,如果check出错的话,不让点中其他行的cell,保留原来的状态。
111 2
21(CurrentCell)(内容出错) 22
点击第一行第二列的Cell,不想让第一行第二列的Cell处于选中状态,还是保留第二行第一列的为选中状态。
有没有e.Cancel或e.Handled类似的处理。
另外,上面的操作走了几次RowLeave? 回复 1楼zhbchwin的帖子
感谢对该问题的反馈。
从你的描述来看,可以参考gcMultiRow提供的Validate 单元格值的功能。
你可以添加CellValidators到集合,然后指定CellValidator's CellValidator.Action.而且在每个CellValidateAction中,你还可以通过CellValidateAction.DoActionReason 指定在什么情况下执行这种校验的行为。
有关校验,你可以参考我们的产品文档,路径如下:
C:\Program Files (x86)\GrapeCity\Spread Studio 8\Docs\MultiRow
在文档中的索引:MultiRow Windows Forms > Developer's Guide > Using MultiRow > User Input Validation
另外有关你提到的RowLeave走了几次,我不太理解你的意思,是在执行这句代码中出现了什么样的问题么? 回复 2楼Alice的帖子
谢谢回答,我试一下。
RowLeave走了几次的问题,不了解MultiRow处理事件的流程。
假设从Cell 21到Cell12应该是走1次RowLeave吧,现在debug发现走了两次RowLeave。
难道又跟Me.Cursor处理有关? 回复 3楼zhbchwin的帖子
离开行的时候,会触发RowLeave事件。
根据你的描述来看,此问题和另一个问题类似,不是单纯挂上事件进行点击的时候就会产生,而是受到你代码逻辑的影响。
因此建议你提供此段代码给我们,我们帮你看看,排除影响。 回复 4楼Alice的帖子
简单的Demo试了一下,RowLeave应该只走一次。
自己的画面有3个MultiRow,之间有联动,可能影响了。自己加Flag控制吧。
check 之后中断的处理,在RowValidating里做了,可以用e.Cancel = True实现。
不过这时点其他的按钮一直会走RowLeave和RowValidating,由于一直错误,一直执行e.Cancel = True,所以不能操作其他处理了,只能把数据改对了才能响应其他处理。
我的解决方案是在RowValidating里的最开始加上下面的处理。
If Me.GcMultiRow1.ContainsFocus = False Then
Exit Sub
End
不知道这样是否正常,会不会导致其他问题。 回复 5楼zhbchwin的帖子
谢谢你的反馈。
根据你的描述,我并不了解您的整个代码逻辑,并不能推断会不会有其他的异常产生,这还需要你对代码进行检测。
页:
[1]