找回密码
 立即注册

QQ登录

只需一步,快速开始

chenf1980

论坛元老

41

主题

147

帖子

9349

积分

论坛元老

积分
9349

活字格认证

chenf1980
论坛元老   /  发表于:2011-8-1 13:11  /   查看:7174  /  回复:9
如题所示。
我所写的一系列操作都在CellMouseClick里面完成,但是发现在MultiRow的没有数据的空白处点击,也触发了CellMouseClick事件。

请问应该如何禁止掉?

9 个回复

倒序浏览
chenf1980
论坛元老   /  发表于:2011-8-1 13:16:00
沙发
Protected Overrides Sub onmousedown(ByVal e As System.Windows.Forms.MouseEventArgs)
           If Me.RowCount < 1 Then
                Return
            ElseIf e.Location.X < Me.ScrollableArea.Width AndAlso Me.GetRowDisplayRectangle(Me.RowCount - 1).Bottom = 0 Then
                MyBase.OnMouseDown(e)
            ElseIf e.Location.Y < Me.GetRowDisplayRectangle(Me.RowCount - 1).Bottom Then
                MyBase.OnMouseDown(e)
            Else

                Return
            End If
End Sub

本来打算这样写的,判断点击是不是在cell内,结果这样一来,点击scroll的时候出问题了。连scroll都不动了。
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-8-1 14:17:00
板凳
三大斑竹呢?
回复 使用道具 举报
barrylei
超级版主   /  发表于:2011-8-1 14:44:00
地板
>我所写的一系列操作都在CellMouseClick里面完成,但是发现在MultiRow的没有数据的空白处

只有在Cell上点击,才会发CellMouseClick事件,其他地方不发。
在空白处指的是什么?什么的空白处?
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-8-1 14:59:00
5#
比如在Form上MultiRow有100*100 大小的区域,但是画面上MultiRow数据只有2行,那么本来应该第三行的地方就是空白处了
回复 使用道具 举报
barrylei
超级版主   /  发表于:2011-8-1 15:20:00
6#

本帖子中包含更多资源

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

x
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-8-1 15:24:00
7#
是我问题描述的不够准确吧。
在红色区域,我想直接禁止掉鼠标的左右键。
回复 使用道具 举报
barrylei
超级版主   /  发表于:2011-8-1 15:46:00
8#

回复 7# chenf1980 的帖子

使用下面的代码,通过HitTest来判断鼠标落在哪个区域,只有在非空白处才执行你的代码,是否解决你的问题?

  1. Private Sub gcMultiRow1_MouseClick(sender As Object, e As MouseEventArgs)
  2.         If Me.gcMultiRow1.HitTest(New Point(e.X, e.Y)).Type <> GrapeCity.Win.MultiRow.HitTestType.None Then
  3.     ' 写你的代码
  4.         End If
  5. End Sub

复制代码
回复 使用道具 举报
chenf1980
论坛元老   /  发表于:2011-8-1 16:09:00
9#
谢谢楼主,真的很有用,居然还有这个方法。
回复 使用道具 举报
barrylei
超级版主   /  发表于:2011-8-1 16:31:00
10#

回复 9# chenf1980 的帖子

:-)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部