找回密码
 立即注册

QQ登录

只需一步,快速开始

chenf1980

论坛元老

41

主题

147

帖子

9349

积分

论坛元老

积分
9349

活字格认证

chenf1980
论坛元老   /  发表于:2011-6-28 10:47  /   查看:9840  /  回复:14
在MultiRow有一列,进行输入完成后,就按照这一列进行排序。

我在CellEndEdit事件里做了处理,发现鼠标点击该列的单元格错乱了。

鼠标点击单元格,发现焦点都是落在上次选中的单元格上。

什么原因导致的呢?

14 个回复

正序浏览
neil
论坛元老   /  发表于:2011-6-29 15:39:00
15#

回复 8# chenf1980 的帖子

回复你上面8楼的用例。

“画面的第10行 = 该输入的值”

这个操作应该在CellValuechanged里面完成,

比如在CellValuechanged里面判断,
如果某个特定的Cell(特定的rowindex,特定的cellName)发出的Valuechaned,  那么就把第十行的某个cell的值改成什么。
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-6-29 15:05:00
14#
我也不想,但是式样上需要这样做,nnd
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-6-29 13:48:00
13#

回复 12# chenf1980 的帖子

为什么在改自己的时候,还要去改别的Cell的值呢。
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-6-28 17:08:00
12#
不对啊
我要同时给当前行的cell,以及第十行的Cell进行赋值
前面肯定不是第十行,都不需要判断啊
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-6-28 15:36:00
11#

回复 10# chenf1980 的帖子


If Object.Equals(e.Value, "0000") Then
            e.Value = "1111"
        End If

之前,先判断e.rowindex 是不是第十行啊。  还要判断e.CellName 是不是C2
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-6-28 15:28:00
10#
嗯,我也想用e.value,但是对应于第10行的话,该怎么设置第10行的e.value?
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-6-28 15:25:00
9#

回复 8# chenf1980 的帖子

处理Multirow的事件是,  请注意一条重要的原则:  就是如果在事件参数e 里面有的信息,就一定只能用e里面的信息,不要自己重新去Multirow上取一遍,或者设一遍。

像你上面的,就应该使用e.Value, 或者e.RowIndex,或者 e.CellName 来判断,  不应该使用gcmultirow.item
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-6-28 14:47:00
8#
嗯,上面的方法确实是可以的。
还差最后一步,就是在cellparsing里面,还需要加个条件
就是画面的第10行 = 该输入的值

如果用gcmultirow.item(10,"C2").value = e.value的话,结果又重新出发了cellparsing事件
回复 使用道具 举报
neil
论坛元老   /  发表于:2011-6-28 13:51:00
7#

回复 5# chenf1980 的帖子

应该在CellValueChanged里面做排序。

只是你把0000变成1111的操作不应该在CellValueChanged里面完成。
我猜你的需求应该是:如果输入了0000,就把它变成1111。    这个操作从逻辑上讲应该是在Cell的值变成0000之前,就判断如果是0000就直接变成1111,而不是在CellValueChanged事件(这个事件发生时,cell的值已经变成0000了)中,把已经变成0000的cell再改回来。

所以你这个改值的操作应该在CellParsing事件中改。

  Private Sub MyMultirow1_CellParsing(ByVal sender As System.Object, ByVal e As GrapeCity.Win.MultiRow.CellParsingEventArgs) Handles MyMultirow1.CellParsing

        If Object.Equals(e.Value, "0000") Then
            e.Value = "1111"
        End If

    End Sub
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部