У меня есть форма myForm, для которой KeyPreview имеет значение true.
Идея состоит в том, что я хочу захватить CTRL-Enter и запустить кнопку отправки формы, независимо от того, какое текстовое поле (или другоеконтроль), который может иметь фокус.
Итак, я настроил этот метод:
private void myForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Enter)
{
btnCommit_Click(sender, new EventArgs());
}
}
, который делает именно то, что говорит.Проблема в том, что нажатие клавиши ввода также запускается в текстовом поле, которое было в фокусе, поэтому текстовое поле теперь имеет разрыв строки прямо в середине слова или там, где был курсор.Согласно документам MSDN:
Когда для этого свойства установлено значение true, форма будет получать все события KeyPress, KeyDown и KeyUp.После того, как обработчики событий формы завершили обработку нажатия клавиши, нажатие клавиши затем назначается элементу управления с фокусом.
К сожалению, это НЕ ИСТИНА, я подтвердил, пройдя по коду, который текстовое поле действительно делаетпокажите разрыв новой строки ДО ТОГО, как сработает код myForm_KeyUp.
Я попытался добавить оба
e.Handled = true;
и
e.SuppressKeyPress = true;
Безрезультатно, так как текстовое поле ужепоказывает разрыв строки.
Есть идеи?Я что-то упустил?