ho pensato Ho risolto questo problema da sola, ma è tornato a tormentare la mia domanda così qui va:non può rilevare una scorciatoia Ctrl + Tasto su eventi KeyDown ogni volta che c'è una casella di testo in sola lettura con messa a fuoco
ho il seguente gestore di eventi KeyDown registrato con una forma con un paio di disabili e di sola lettura caselle di testo e sono solo i collegamenti semplici per i pulsanti:
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();
}
il form ha KeyPreview impostato su true, ma ogni volta che una casella di testo in sola lettura è stato attivato e premo Ctrl + E non riesco a ottenere "Control.ModifierKeys == Keys.Control" e "e.KeyCode == Keys.E" per essere entrambi veri allo stesso tempo. Ciò che è veramente strano è che Ctrl + W funziona. Qualcuno ha idea di cosa diavolo sta succedendo? :(
Mi rendo conto che questo è vecchio. Il tuo codice fa riferimento a "Control.ModifierKeys". Dovrebbe probabilmente essere "e.Modifiers". – Metro