2009-08-07 2 views
3

У меня есть форма с настраиваемым элементом управления. Предположим, что пользовательский контроль имеет фокус. Если я покажу окно сообщения из этой формы, , когда окно сообщения закрыто, нажав кнопку «Ввод» на кнопке « ОК» или «Отмена», окно сообщения закрывается, а пользовательский элемент управления получает событие клавиатуры (OnKeyUp) с вводом ключ.Введите ключ, не использованный MessageBox, C#, Windows Forms

Это не происходит, если клавиша пробела используется для «нажатия» либо кнопки «ОК», либо «Отмена».

Похоже, что MessageBox не использует клавишу ввода для . Я попробовал это с использованием свойства KeyPreview формы , но не было никакой разницы.

Кто-нибудь знает, как остановить это сообщение после того, как он используется для нажатия кнопки MessageBox?

+0

Благодарим за ответы. Да, я мог бы игнорировать это, но большую часть времени мне нужно это событие. Решение получило использование OnKeyDown или OnKeyPressed вместо OnKeyUp, поскольку первые два события используются в поле сообщения. – NXT

ответ

3

Не можете ли вы игнорировать его в коде? Это 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 
2

я сделал грубое преобразование из VB.NET в C# для вас, я надеюсь, что это помогает.

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