【发布时间】:2015-03-30 15:14:49
【问题描述】:
我正在编写一个仅由键盘上的 numblock 控制的应用程序,我需要用这段代码解决问题:
private void btnSaveCorrection_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("HEY");
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("HEY");
// Save to DB and jump to next control
}
else
{
MessageBox.Show("WTF");
// if e.KeyCode is [+] or [-], jump to next/previous control
}
}
问题是: 当我按 Enter 时,什么也没有发生。当我按任何其他键时,会显示 MessageBox "WTF"。为什么在按下 Enter 时忽略 KeyDown 事件中的所有代码?如何解决?
感谢您的每一个回复。
【问题讨论】:
-
您是否在您的页面上定义了一个默认按钮来抓取回车键?
-
回车后设置断点的
KeyCode是什么?在断点调试期间还会发生什么? -
它工作正常,所以你必须有其他事情发生。它有没有到达事件处理程序?
-
您是否将另一个控件设置为默认接受按钮? msdn.microsoft.com/en-us/library/aa984346%28v=vs.71%29.aspx 如果你在选择一个按钮时按下回车,我相信它会点击它,这将在事件处理程序之前被触发。 Enter 和按钮的处理方式不同 - 您可能希望在表单上将 EnableKeyPreview 设置为 true 或类似的内容?
-
这是winforms还是WPF?