Я думал, что решил эту проблему сам, но она вернулась, чтобы преследовать мое приложение, поэтому вот оно:
У меня есть следующий обработчик событий keydown, зарегистрированный в форме с несколькими отключенными и текстовыми полями только для чтения, и это только простые клавиши для кнопок:
private void AccountViewForm_KeyDown(object sender, KeyEventArgs e)
{
//e.SuppressKeyPress = true;
//e.Handled = true;
if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.E && !isInEditMode)
btnEditMode_Click(sender, e);
if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.S && isInEditMode) btnEditMode_Click(sender, e);
if (e.KeyCode == Keys.Escape) btnCancel_Click(sender, e);
if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.W) Close();
}
форма имеет значение KeyPreview для true, но всякий раз, когда текстовое поле readonly имеет фокус, и я нажимаю Ctrl + E, я не могу получить "Control.ModifierKeys == Keys.Control" и "e.KeyCode == Keys.E" на одновременно быть истинными. Странно, что Ctrl + W работает. Кто-нибудь знает, что, черт возьми, происходит?: (