找回密码
 立即注册

QQ登录

只需一步,快速开始

thguo20009

中级会员

2

主题

7

帖子

633

积分

中级会员

积分
633

活字格认证

最新发帖
thguo20009
中级会员   /  发表于:2013-9-16 14:34  /   查看:6249  /  回复:7
问题:鼠标点击列头触发相关事件,原文网址发布不上来,详见图片附件


本帖子中包含更多资源

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

x

7 个回复

倒序浏览
gw0506
超级版主   /  发表于:2013-9-16 15:08:00
沙发
抱歉,没明白你的问题是什么。
回复 使用道具 举报
thguo20009
中级会员   /  发表于:2013-9-16 15:21:00
板凳
回复 2楼gw0506的帖子

是这样的,在c1FlexGrid添加一列,这一列为按钮列,当焦点在按钮列的某个单元格时,点击grid任意列的caption,也会触发按钮事件。

本帖子中包含更多资源

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

x
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-16 18:13:00
地板
你说的问题我重现了,由于这是个示意Demo,所以没有做充分测试。

这个问题你可以通过判断c1FlexGrid1.ColSel和c1FlexGrid1.MouseCol是否一致来解决。
  1.         void c1FlexGrid1_MouseClick(object sender, MouseEventArgs e)
  2.         {
  3.             if (this.c1FlexGrid1.MouseCol != this.c1FlexGrid1.ColSel)
  4.             {
  5.                 return;
  6.             }
  7.             switch (c1FlexGrid1.ColSel)
  8.             {
  9.                 case 5:
  10.                     MessageBox.Show(string.Format("编辑产品:{0}",c1FlexGrid1[c1FlexGrid1.Row,2]));
  11.                     break;  
  12.                 case 6:
  13.                     MessageBox.Show(string.Format("删除产品:{0}", c1FlexGrid1[c1FlexGrid1.Row, 2]));
  14.                     break;
  15.                 default:
  16.                     break;
  17.             }
  18.         }
复制代码
回复 使用道具 举报
thguo20009
中级会员   /  发表于:2013-9-16 19:16:00
5#
回复 4楼gw0506的帖子

gw0506 你好,
感谢你的及时回复,刚测试了你的方案,还存在一个小问题:
如果焦点在按钮列的某个单元格,点击该按钮列列头,仍然会触发按钮事件。
回复 使用道具 举报
thguo20009
中级会员   /  发表于:2013-9-16 19:52:00
6#
gw0506 你好,
5楼提出的问题已经解决:
if (!contactFlexGrid.AllowEditing
     || contactFlexGrid.Row <= 0
     || this.contactFlexGrid.MouseCol!=this.contactFlexGrid.ColSel
     || (this.contactFlexGrid.Rows[this.contactFlexGrid.MouseRow][10]!=null &&
          this.contactFlexGrid.Rows[this.contactFlexGrid.MouseRow][10].ToString()=="Action"))
  {
                return;
  }

问题原因分析:
在调试的时候发现 this.contactFlexGrid.MouseCol始终为-1,可能调试的时候MouseCol还在初始状态,
有点像beforeEdit事件,好在运行时满足需求,问题解决。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2013-9-17 08:51:00
7#
可以考虑加this.c1FlexGrid1.MouseRow <= 0条件,替换RowSel以及最后两个取单元格数据的条件,这样可以优化性能。

不管怎么说,解决就好。感谢你帮我们找到Demo中的不足。
有问题欢迎开新贴提出。
回复 使用道具 举报
unity
社区贡献组   /  发表于:2013-9-26 16:58:00
8#
鼠标事件中判断行列,尽量使用mousecol,mouserow。
或者使用HitTest进行拣选。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部