使用C#在Windows窗体应用程序中正确使用OnClick与MouseClick事件

Bil*_*lly 5 .net c# events winforms

我正在开发一个自定义控件,并意识到我的代码正在运行两次.这不是一个很大的问题(它只是一个Focus方法调用).但是,我想了解它.

从阅读MSDN描述中点击| onclick事件,它声明:

当用户在对象上单击鼠标左键时触发.

所以我添加了OnClick事件和MouseClick事件来处理左右点击.但在调试代码后,我发现OnClick处理左右键单击事件.

为什么OnClick处理这两个并且我是否需要在我的代码中保留这两个事件由于某种原因我忽略了?

protected override void OnClick(EventArgs e)
{

   this.Focus();
   base.OnClick(e);
}

private void CustomControl_MouseClick(object sender, MouseEventArgs e)
{       
   if (e.Button == MouseButtons.Right)
   {
      rightClickMenu(e);
   }
}
Run Code Online (Sandbox Code Playgroud)

Met*_*ght 11

根据MSDN,Click事件不仅在单击鼠标时被调用,而且在按下Enter按钮时也被调用.如果您只需要处理鼠标点击,我会在MouseClick事件中移动您的所有代码.你不能反过来做因为Click事件不会告诉你点击了哪个鼠标按钮(如果有的话).


nig*_*der 6

首先,您的链接不正确,它链接到HTML和DHTML参考,而不是WinForms :)正确的链接是Control.MouseClick事件
您只需要覆盖一个方法.如果您只想处理鼠标单击 - 覆盖OnMouseClick()并且不处理MouseClick事件,否则 - 覆盖OnClick()并且不要覆盖OnMouseClick().