WinForm控件消息处理的两个参数sender和e
2014-07-04 13:49
183 查看
以按钮的单击事件说明。按钮的单击事件处理函数形如:private void btn_start_Click(object sender, EventArgs e)
sender参数表示发送者,此处表示按钮。在调试的时候,将鼠标停留在sender参数上,稍等片刻,在弹出的提示框中,点左边的加号展开,能看到sender是ButtonBase类的对象。
System.Windows.Forms.Button btn = sender as Button;
System.Windows.Forms.ButtonBase btnBase = sender as ButtonBase;
这两行意思就非常明示了,sender就是你所点击的按钮对象的引用。Button类继承自ButtonBase类。
第二个参数:EventArgs e
选定EventArgs按F12,可以看到EventArgs是一个类,定义了一个静态只读成员变量Empty。到此,大多还不明白。如同第一个参数一样,调试的时候,将鼠标停留在e参数上,在弹出的提示框中,点左边的加号展开,可以看到,e参数是System.Windows.Forms.MouseEventArgs对象。
System.Windows.Forms.MouseEventArgs mer = e as System.Windows.Forms.MouseEventArgs;加上这样一句,转到MouseEventArgs定义看就非常明白了(MouseEventArgs类继承自EventArgs类),就是将鼠标的动作信息封装在这个类的对象e中。这个对象描述了鼠标点击情况,比如在按钮的那个位置点下了鼠标,Button说明是鼠标哪个键被按下了等信息。
System.Windows.Forms.ButtonBase btnBase = sender as ButtonBase;
int iBtnWidth = btnBase.Size.Width;
System.Windows.Forms.MouseEventArgs mer = e as System.Windows.Forms.MouseEventArgs;
int X = mer.X;
if (X < (int)iBtnWidth / 2)
{
MessageBox.Show("点出了按钮的左边", "信息");
}
else
{
MessageBox.Show("点出了按钮的中右边", "信息");
}
写上这样一段代码,就更容易理解了。
sender参数表示发送者,此处表示按钮。在调试的时候,将鼠标停留在sender参数上,稍等片刻,在弹出的提示框中,点左边的加号展开,能看到sender是ButtonBase类的对象。
System.Windows.Forms.Button btn = sender as Button;
System.Windows.Forms.ButtonBase btnBase = sender as ButtonBase;
这两行意思就非常明示了,sender就是你所点击的按钮对象的引用。Button类继承自ButtonBase类。
第二个参数:EventArgs e
选定EventArgs按F12,可以看到EventArgs是一个类,定义了一个静态只读成员变量Empty。到此,大多还不明白。如同第一个参数一样,调试的时候,将鼠标停留在e参数上,在弹出的提示框中,点左边的加号展开,可以看到,e参数是System.Windows.Forms.MouseEventArgs对象。
System.Windows.Forms.MouseEventArgs mer = e as System.Windows.Forms.MouseEventArgs;加上这样一句,转到MouseEventArgs定义看就非常明白了(MouseEventArgs类继承自EventArgs类),就是将鼠标的动作信息封装在这个类的对象e中。这个对象描述了鼠标点击情况,比如在按钮的那个位置点下了鼠标,Button说明是鼠标哪个键被按下了等信息。
System.Windows.Forms.ButtonBase btnBase = sender as ButtonBase;
int iBtnWidth = btnBase.Size.Width;
System.Windows.Forms.MouseEventArgs mer = e as System.Windows.Forms.MouseEventArgs;
int X = mer.X;
if (X < (int)iBtnWidth / 2)
{
MessageBox.Show("点出了按钮的左边", "信息");
}
else
{
MessageBox.Show("点出了按钮的中右边", "信息");
}
写上这样一段代码,就更容易理解了。
相关文章推荐
- 怎样在vs2010里面实现两个编辑控件对应一个消息处理函数
- TWinControl.DefaultHandler处理WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC消息的两个参数很有意思,两个都是传递句柄
- .Net WinForm 控件键盘消息处理剖析
- .Net WinForm 控件键盘消息处理剖析
- .Net WinForm 控件键盘消息处理剖析
- OnClick事件的Sender参数的前世今生——TWinControl.WinProc优先捕捉到鼠标消息,然后使用IsControlMouseMsg函数进行消息转发给图形子控件(意外发现OnClick是由WM_LBUTTONUP触发的)
- WinForm 控件键盘消息处理剖析(转)
- 怎样在vs2010里面实现两个编辑控件对应一个消息处理函数
- 消息处理:利用控件的动态派生[RunTime],为控件添加该控件未定义的消息映射
- 通过消息拦截达到在Delphi控件中屏蔽原有事件处理的一种方法
- 事件处理程序中sender参数的用法
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- 对话框中控件的WM_KEYDOWN消息处理
- C# 模仿QQ、MSN消息提示系列 五、改进 只使用两个时间控件
- winForm ComboBox 控件默认值绑定及只可选择不可输入设定处理
- 可选择的树控件状态改变时的通知消息处理
- MFC批处理控件的消息函数
- C# 模仿QQ、MSN消息提示系列 五、改进 只使用两个时间控件
- [转]c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)
- activex控件加速键消息处理不完全方案