winforms Enter键不被MessageBox、C#、Windows窗体使用

omhiaaxx  于 2023-04-12  发布在  C#
关注(0)|答案(4)|浏览(164)

我有一个带有自定义控件的窗体。假设自定义控件具有焦点。如果我显示该窗体中的消息框,则当在“确定”或“取消”按钮上按Enter关闭消息框时,消息框将关闭,然后自定义控件将获得一个带有enter键的键盘事件(OnKeyUp)。
如果空格键用于“按下”“确定”或“取消”按钮,则不会发生这种情况。
这就像MessageBox由于某种原因不使用Enter键一样。我在打开窗体的KeyPreview属性的情况下尝试了这个方法,但没有什么区别。
有人知道如何停止输入消息后,它是用来按下MessageBox按钮?

gupuwyp2

gupuwyp21#

你不能在代码中忽略它吗?这是VB语法:

Private Sub frmEdit_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
    If e.KeyCode = Keys.Enter Then
        e.Handled = True
    End If
End Sub
zour9fqk

zour9fqk2#

我已经为你做了一个从VB.NET到C#的粗略转换,希望对你有所帮助。

private void frmEdit_KeyUp(ByVal object sender, KeyEventArgs e)
{
   if( e.KeyCode == Keys.Enter )
      {
         e.Handled = true;
      }
   else Application.DoEvents();
}
jbose2ul

jbose2ul3#

谢谢你的答案.是的,我可以忽略它,但大多数时候我需要该事件.解决方案原来是使用OnKeyDown或OnKeyPressed而不是OnKeyUp,因为前两个事件是由消息框消耗.

omtl5h9j

omtl5h9j4#

请改用KeyDown事件,这不会导致此问题。

相关问题