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

标签 c# .net winforms events

我目前正在开发自定义控件,发现我的代码被运行了两次。这并不是一个大问题(它只是一个 Focus 方法调用)。但是,我想了解一下。

来自阅读MSDN description for click | onclick event ,它指出:

Fires when the user clicks the left mouse button on the object.

所以我添加了 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);
   }
}

最佳答案

According to MSDN , Click 事件不仅在单击鼠标时调用,而且在按下 Enter 按钮时调用。如果您只需要处理鼠标点击,我会将您的所有代码移到 MouseClick 事件中。您不能以相反的方式执行此操作,因为 Click 事件不会告诉您单击了哪个鼠标按钮(如果有)。

关于c# - 在使用 C# 的 Windows 窗体应用程序中正确使用 OnClick 与 MouseClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/936544/

相关文章:

c# - WPF DataGrid 在 AutoGenerateColumns 为 nullable bool 时强制绑定(bind) DataGridCheckBoxColumn

c# - 如何使用 MVC 5 和 Web API 构建 Android 应用程序?

c# - 为什么 RSAParameters Modulus 不等于 P 和 Q 的乘积?

c# - 尝试在调试中编辑时不允许更改为 64 位,为什么?

c# - 禁用 Windows 窗体 Web 浏览器中的提示

c# - WPF Windows 窗体主机键盘事件

c# - 如何在 WPF 数据网格中只显示日期而不显示日期和时间?

c# - 基准日期时间

c# - 为什么闭包对于使用声明的 C# 8.0 中的变量不同?

c# - Windows 窗体 PictureBox.Image 为空,即使窗体中显示了图像