获取鼠标在窗体上的单击事件(left or right)。

颤菊大师 2009-02-07 05:46:49

不管是在容器、控件、文本框等,只要发生了单击事件……
请问,怎么实现?
...全文
185 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
颤菊大师 2009-02-09
  • 打赏
  • 举报
回复
自我顶一下,感谢CsToD。可以一试!
fenglaijun 2009-02-08
  • 打赏
  • 举报
回复
使用MouseClick事件
e.MouseButtons
CsToD 2009-02-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lovefootball 的回复:]
你可以重写窗体的WndProc 方法,在这里面监视鼠标消息
[/Quote]

你的方法应该是不行的,不能处理控件的消息。
如果是键盘,有一个KeyPreview来使得窗台接收控件的键盘消息
而鼠标,不知道有没有

有一个解决办法是:增加消息筛选器
Application.AddMessageFilter

但是这是处理消息的,比如左键按下,左键释放,而不是楼主所说的单击事件
而把消息处理为单击事件,并不是一件容易的事,这里面还设计按下与抬起鼠标的时间间隔,以及坐标间距离等
只有在间隔小于规定的时间内,距离也在规定的距离内(这些可以在SystemInformation这个类里查到)才能被记做是单击

显然,这样的代价太大,如果不是很严格,直接在消息层面处理就行了
renzaijiang 2009-02-07
  • 打赏
  • 举报
回复
mmmmmmmmark
lovefootball 2009-02-07
  • 打赏
  • 举报
回复
你可以重写窗体的WndProc 方法,在这里面监视鼠标消息

enaking 2009-02-07
  • 打赏
  • 举报
回复
http://www.cnprog.com/questions/14/WinForm程序中如何始终让窗口捕获键盘事件
Jave.Lin 2009-02-07
  • 打赏
  • 举报
回复
除了用Hook,只能每个控件上加Click事件处理了。
颤菊大师 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzq1996 的回复:]
hook,鼠标钩子
[/Quote]
可是我并不是要全局。用钩子是不是浪费了?
zhaozhijun0207 2009-02-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzq1996 的回复:]
hook,鼠标钩子
[/Quote]

钩子怎么用的?
给个小例子,我也想学下
zhaozhijun0207 2009-02-07
  • 打赏
  • 举报
回复

if (e.Button == MouseButtons.Left)
(
)
if (e.Button == MouseButtons.Right)
(
)


我做的都是针对单一控件写的,
你说任何控件都触发事件,应该是监听事件吧,
就好像在键盘上按"Ctrl+V"就触发某个事件
zzq1996 2009-02-07
  • 打赏
  • 举报
回复
hook,鼠标钩子

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧