Какое значение символа посылает клавиша Control + Enter / Return? - PullRequest
2 голосов
/ 11 февраля 2010

У нас есть многострочный элемент управления, который мы пытаемся предотвратить использование клавиши Enter / Return для создания новой строки.

Как ни странно, "AcceptsReturn", как False, не предотвращает это.

Итак, мы добавили следующее:

Private Sub txtAddr_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAddr.KeyPress
    If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then
        e.Handled = True
    End If
End Sub

Это работает нормально, однако один из обнаруженных сотрудников QA, нажимая Control + Enter, все еще вводит новую строку.

Как бы мы это предотвратили?

И почему AcceptsReturn, будучи False, не работает так, как кажется? Какова цель этого?

Ответы [ 3 ]

4 голосов
/ 11 февраля 2010

Ctrl + enter, скорее всего, приведет к переводу строки ( ASCII 10 ).

Хотя это может зависеть от конкретной системы.

Если вы проверяете возврат каретки (ASCII 13) и перевод строки, хотя у вас, вероятно, есть большинство основ.

2 голосов
/ 11 февраля 2010

Свойство AcceptsReturn делает что-то еще. Клавиша Enter обычно использует кнопку ОК в диалоговом окне. Если AcceptsReturn = true, клавиша Enter будет вводить новую строку в текстовое поле вместо активации кнопки ОК. Событие Click.

Нажатие Ctrl + Enter сгенерирует перевод строки, TextBox также воспринимает это как новую строку. Используйте это событие KeyDown для фильтрации всех комбинаций:

private void textBox1_KeyDown(object sender, KeyEventArgs e) {
  if ((e.KeyData & Keys.KeyCode) == Keys.Enter) e.SuppressKeyPress = true;
}
0 голосов
/ 11 февраля 2010

Полагаю, вам придется перехватывать это в KeyDown, а не в событии KeyPress.

...