Poiché Carter ha sottolineato che ciò si applica solo se è impostato AcceptButton e l'altra soluzione suggerisce di derivare la classe RichTextBox, ho trovato un'altra soluzione semplice. Basta annullare AcceptButton per il tempo in cui/un RichTextBox ha il focus. Ecco un esempio di codice:
private void RichText_Enter(object sender, EventArgs e)
{
AcceptButton = null;
}
private void RichText_Leave(object sender, EventArgs e)
{
AcceptButton = OKActionButton;
}
Questo presuppone che solo un singolo AcceptButton e che è improbabile che cambi. Altrimenti dovresti copiare qualche logica di ricerca AcceptButton qui o semplicemente eseguire il backup del valore AcceptButton precedente prima di impostarlo su null.
Questa soluzione ha anche l'effetto collaterale di rimuovere il bordo predefinito dal pulsante di accettazione effettivo, indicando all'utente che premendo il tasto Invio ora non verrà attivato quel pulsante.
Grazie. Si scopre che ho avuto quel set. Ho dimenticato che sto gestendo le pressioni dei tasti a livello di modulo per spostarmi tra i controlli di invio. Dovrò agganciare tutti i tasti e controllare che entri ogni volta per sovrascrivere i miei comportamenti. Grazie. – captncraig