请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

wdtlcv

初级会员

21

主题

58

帖子

431

积分

初级会员

积分
431

活字格认证微信认证勋章

wdtlcv
初级会员   /  发表于:2016-1-20 14:36  /   查看:4291  /  回复:3
版主好:
       目前,我遇到一个关于C1TrueDBGrid事件BeforeRowColChange事件的问题,想请教一下
       具体问题如下
       在单元格之间相互切换的时候,会触发BeforeRowColChange,但是如果我选中整行的话,同样会触发BeforeRowColChange事件
       例如,当前单元格在第二行的第一列
       如下图
      

       此时鼠标点击当前行的第二列
       这时候会触发BeforeRowColChange事件
      我在该事件中加了一个弹messagebox的代码,显示当前的列索引
如下图


此时,当前的单元格也发生了变化,变到第二行的第二列
如下图



但是,如果,此时我用鼠标点击这行的行头,全选择整行的话
同样会触发BeforeRowColChange,可是这时候单元格并未发生变化
下图是鼠标点击时的列索引


下图是消息返回后,整行全选择


但是,此时,单元格并未改变,例如,我再按下enter,单元格会下移到下一行的第一列
下图是Enter键按下时列索引,仍然是一,并未发生改变


下图是,Enter按下后,光标最终落到的单元格



我的理解是,我觉得当前单元格未发生改变的情况下,BeforeRowColChange事件原则上是不应该触发的
现在,我想在BeforeRowColChange做一些处理,结果发现对于整行选择的时候,BeforeRowColChange照样触发
这样,我就无法在BeforeRowColChange事件中判断是否当前单元格要发生改变了

对于这种问题,我想请教一下,如何判断我当前是否是选择整行的状态,或者是有没有办法在BeforeRowColChange事件中能有效的判断出当前单元格确实要发生变化呢

谢谢

以下是测试代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-1-21 15:41:00
沙发
回复 1楼wdtlcv的帖子

谢谢您的反馈。
有关BeforeRowColChange这个问题,感觉和您提到的另一个bug类似:
http://gcdn.gcpowertools.com.cn/showtopic-20336.html

这个事件触发的时机就是当focus焦点发生变化之前。主要就在于是否focus框发生了转移。
有关这个事件的详细描述,请参考产品文档:
http://helpcentral.componentone. ... wcolchangeevent.htm

有关单元格的跳转方向,可以参考下另一个产品文档:
http://helpcentral.componentone. ... gcellnavigation.htm

通过C1TrueDBGrid的Row/DestinationRow/Col/DestinationCol属性可以拿到当前行/列以及目标的行/列,然后就知道是否行列有所变化。

如果是想知道是否有行选,可以通过SelectedRows集合拿到选择的行,如果这个集合的Count是0,就表示没有选择的行。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
wdtlcv
初级会员   /  发表于:2016-1-21 16:49:00
板凳
非常感谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-1-21 17:07:00
地板
回复 3楼wdtlcv的帖子

不用客气
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部