C# 排除使用键盘输入触发按钮的可能性
我有一个标准按钮,没有任何有趣的东西,而且一切都很完美:C# 排除使用键盘输入触发按钮的可能性,c#,button,input,keyboard,click,C#,Button,Input,Keyboard,Click,我有一个标准按钮,没有任何有趣的东西,而且一切都很完美: private void Button_Click(object sender, EventArgs e) { //Whatever, is not important what's in it } 问题是,当我点击一个按钮时,如果之后我按下例如回车键或空格键,它会像我点击它一样触发该按钮 我试图弄乱房子,但也无济于事。 我如何以一种(可能的)简单的方式防止这种情况发生 为任何需要它的人解答(放入按钮内): 您可以检查给定的Ev
private void Button_Click(object sender, EventArgs e)
{
//Whatever, is not important what's in it
}
问题是,当我点击一个按钮时,如果之后我按下例如回车键或空格键,它会像我点击它一样触发该按钮
我试图弄乱房子,但也无济于事。
我如何以一种(可能的)简单的方式防止这种情况发生
为任何需要它的人解答(放入按钮内):
您可以检查给定的
EventArgs
的类型,如果单击按钮e
是MouseEventArgs
(并将包含有关单击的信息),否则只是EventArgs
private void button1_Click(object sender, EventArgs e)
{
if (e is MouseEventArgs)
{
// Is mouse click
}
else
{
// Not mouse click...
}
}
虽然Matteo Umili提供了一个有效的解决方案,但我认为如果有人认为这个解决方案有用,我会与大家分享: 只需将焦点从按钮移到另一个控件即可。此解决方案需要另一个控件才能切换到焦点。在我的示例中,我使用的是标签
private void button2_Click(object sender, EventArgs e)
{
label1.Focus();
}
这是WPF还是WinForms?@Roma这是WinFormsB,但这里是对事件处理程序的冗余调用。@Roma我不调用任何方法,但当按下ENTER键时,此事件处理程序会执行一些操作。您可以禁用按钮的制表符,此按钮不会触发此事件handler@Roma我只有一个操作在里面,我想我不会有任何问题。@JackIta,这不是问题,这个解决方案会像你期望的那样工作。这个解决方案将更好地处理鼠标和键盘点击在不同的方式。但在您的情况下,键盘被忽略。如果此解决方案适合您,那就太好了)
private void button2_Click(object sender, EventArgs e)
{
label1.Focus();
}