一个Control类,我不仅override 了OnClick 方法,
同时写了Click+=New EventHandler(Control_Click)
请问当我点击一下鼠标,Onclick 方法和Control_Click方法谁先被调用,它们有什么区别?
同时写了Click+=New EventHandler(Control_Click)
请问当我点击一下鼠标,Onclick 方法和Control_Click方法谁先被调用,它们有什么区别?
解决方案 »
- 关于HttpWebRequest登录账号的问题
- WPF TabControl 选中的问题 100分马上结贴
- 在多线程情况下,如何获取当前线程id
- 一个窗口如何使用主窗口中的控件?
- team suite 2008 包含 team explorer吗?我在微软网站上下的90天试用版,好像里面不包含团队管理器
- 怎样快速生成指定大小的文件?
- 超级弱问题!请大侠给解答
- 在C#中如何加上代码的标号?
- 内存映射问题
- C#怎么在指定路径下建立一个文件夹?
- 怎么将SQL查询出来的值 赋给 控件的text属性
- 怎么设置HttpWebRequest才能正确获取"http://alexa.chinaz.com/Alexa_More.asp?Domain=csdn.net"这个网页
OnClick是在内部实现 先调用这个方法,再向外面抛出Click事件
也就是你注册的Click事件来的了
效果差异不大,但通常的做法是,事件是由用户(即使用这个控件的程序员)使用的。而你写控件,应该重写OnClick方法。
{
protected override void OnClick(EventArgs e)
{
MessageBox.Show("onclick");
//下面這行代碼調用Button類的OnClick方法。該方法會在內部觸發Click事件。
//如果你刪除這行代碼,Click事件將不會觸發
base.OnClick(e);
}
public MyButton()
{
base.Click += new EventHandler(MyButton_Click);
} void MyButton_Click(object sender, EventArgs e)
{
MessageBox.Show("click");
}
}
protected virtual void OnClick(object sender, EventArgs e)
{
clickEventHandler.Invoke(sender, e);//调用注册的事件
}