C#中如何处理鼠标事件
C#中如何处理鼠标事件
注意表中用黑体标出的事件,这些事件顾名便可思意:MouseDown、 MouseEnter、 MouseHover、 MouseLeave、 MouseMove 和 MouseUp,如果你想要处理右键按下事件,可以安装 MouseDown 事件处理例程,用 MouseEventArgs.Button == MouseButtons.Right 检查 MouseEventArgs,下面的代码段示范了如何来做: public class MyControl : Control { // 构造函数 public MyControl() { // 安装右键按下事件处理器 this.myctl1.MouseDown += new MouseEventHandler(this.OnMouseDown); } // 处理例程 private void OnMouseDown(object sender, MouseEventArgs e) { if (e==MouseButtons.Right) // do something } } 表一里有三个有用的鼠标事件是在 MFC 中不能直接处理的:MouseEnter、 MouseHover 和 MouseLeave。在 Win32 里,要处理这些事件必须通过专门的 TrackMouseEvent 函数。.NET 框架 中,每当鼠标进入或离开特定控制时便会触发MouseEnter 和 MouseLeave,当你想在鼠标移动到控制上时使控制呈高亮状态,这些事件相当有用,例如在浏览器中高亮显示链接。当鼠标移动到控制上后,在预先确定好的时间里(这个时间由 SystemParametersInfo(SPI_GETMOUSEHOVERTIME)) 指定),.NET 框架会激活 MouseHover。它在 Tooltips 和其它类似的定时弹出式功能应用中广泛使用。 这些鼠标事件和大家所熟悉的 Click 事件有何关系呢?我想可以这么认为,Click 属于层次较高的逻辑事件,而鼠标事件的级别相对较低,例如,不管用户按下的是左键还是右键,Forms 都触发 Click 事件,而 文本框只能触发左键的 Click 事件。表二中列出了不同种类的控制其 Click 事件的含意。 (表二)由 Click 激发的事件
最后,不管怎样,只要你愿意,总是可以改写 Control.WndProc 来处理任何 WM_XXX 消息,比如:你可以定制 WM_NCLBUTTONDOWN 消息处理代码: protected override void WndProc(ref Message m) { // 值来自 winuser.h const int WM_NCLBUTTONDOWN = 0x00A1; if (m.Msg == WM_NCLBUTTONDOWN) { //do something } base.WndProc(ref m); // 这一步不能忘! } 我写了一个例子程序 MouseTrap,如图一所示, 图一 MouseEventTrap 该程序示范了如何进行鼠标事件的处理。如果你借 WndProc 处理消息,由于必须用 IntPtrs 获取消息参数,所以你或多或少要用 C 编程,但因为你已经谙熟 C++,所以此时你不会感觉吃力,而是轻车熟路。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- · 简单PID数字控制的VC程序实现
- · Platform Builder之旅(四)
- · Platform Builder之旅(三)
- · Platform Builder之旅(二)
- · Platform Builder之旅(一)
- · 对已发表的文章中错误的总结
- · 自编写CE进程查看程序
- · 在 Windows CE 下申请大容量物理内存
- · Windows CE下串口通信
- · 模式与J2EE
- · OO三步曲
- · 使用 UML 为 Web 应用程序构架建模
- · 从用户接触到完成需求说明书
- · 用ISAPIfilter使INC、ASA文件安全
- · ASP应用之模板采用
- · 修改ASP代码防止被杀毒软件误删
- · ASP.NET创建XML Web服务全接触(15)
- · ASP.NET创建XML Web服务全接触(11)
- · ASP.NET创建XML Web服务全接触(7)
- · ASP.NET创建XML Web服务全接触(5)
- · ASP.NET创建XML Web服务全接触(4)
- · ASP.NET创建XML Web服务全接触(3)
- · ASP.NET创建XML Web服务全接触(2)
- · ASP.NET创建XML Web服务全接触(1)
- · .Net的精髓-XML和SOAP(三)
- · .Net的精髓-XML和SOAP(二)
- · .Net的精髓-XML和SOAP(一)
- · asp.net高级教程(三)-对象
- · asp.net高级教程(二)-转换编程思维
- · asp.net高级教程(一)-asp.net or asp+
- · ASP设计常见问题及解答精要
- · 通过表单创建word的一个例子
- · 在ASP中实现购物小车
- · Web程序中网页间数据传递方法小结
- · 关于如何保障Winnt +asp +sql web站点的安全经…
- · ASP文件中的安全问题
- · ASP开发10条经验总结
- · 认识和优化connection对象
