我目前正在开发一个自定义控件,并意识到我的代码正在运行两次。这实际上并不是一个大问题(它只是 Focus 方法调用)。不过,我想了解一下。
从阅读点击| MSDN说明单击事件 http://msdn.microsoft.com/en-us/library/ms536913(VS.85).aspx,它指出:
当用户在对象上单击鼠标左键时触发。
因此,我添加了 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);
}
}
根据 MSDN https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.control.click,Click 事件不仅在单击鼠标时调用,而且在按下 Enter 按钮时也会调用。如果您只需要处理鼠标单击,我会将所有代码移到 MouseClick 事件中。您不能以相反的方式执行此操作,因为 Click 事件不会告诉您单击了哪个鼠标按钮(如果有)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)