过去用 C++/MFC 开发程序时,常常为用户提供鼠标的右键单击功能,如今在 .NET 框架中使用 C#,也想在程序中提供鼠标右键单击功能,比如,在文本框、窗格、标签以及主窗口背景上使用鼠标右键。毕竟 C# 不是 C++/MFC,那么如何用 C# 处理鼠标事件呢?本文下面将专门探讨这个问题。
在 .NET 框架下编程是非常容易的一件事情,有时候容易得连 C++ 程序员想都想不到。这主要是因为用 C++ 编写代码常常需要“硬工夫”。所谓“硬工夫”,也就是很多细节都要自己考虑和处理。但使用 C# 则不然。如果你想显示上下文菜单,完全没有必要去和事件参合。只要设置控制的 ContextMenu 属性即可,就象下面这样:
ContextMenu myContextMenu = ...
myControl.ContextMenu = myContextMenu;
就这么简单。只要按照上述方法设置好属性,当用户单击右键时,菜单便会自动显示出来。此外,如果你想进一步实现右键拖拽,这才涉及到事件处理。在
MFC
中,你会自然而然想到用
OnRButtonDown
和
OnRButtonUp
实现,但是那不是
Windows
窗体(
Forms
)的工作方式。虽然许多窗口类确实提供了可以改写的虚拟函数来处理常用消息(如:
Form.OnActivated
和
Form.OnClosed
),但是在
.NET
框架中编程,你必须要学会用事件来思考,而且要了解一个类提供了哪些事件。下面这个表列出了被
Control
类提供的比较常用的事件:
(表一)
(表一)
Click
|
HelpRequested
|
MouseLeave
|
ContextMenuChanged
|
Invalidated
|
MouseMove
|
DoubleClick
|
KeyDown
|
MouseUp
|
DragDrop
|
KeyPress
|
MouseWheel
|
DragEnter
|
KeyUp
|
Move
|
DragLeave
|