2011-12-21 18 views
5

sto sperimentando alcuni problemi con i tasti mnemonici in Windows Form:Accelerator (Tasto di scelta) vengono eseguite senza premere tasti ALT

Basta avere un modulo con un pulsante, che utilizza ALT + s come l'acceleratore:

this.searchButton = new System.Windows.Forms.Button(); 
this.searchButton.Text = "&search"; 

L'azione del pulsante viene eseguita premendo semplicemente "s" (senza premere il tasto ALT). Ho controllato alcune altre applicazioni e le azioni dell'acceleratore vengono eseguite solo quando si preme il tasto ALT.

  • Si tratta di un problema di .NET?
  • Come potrebbe risolvere questo problema?

Grazie in anticipo.

+0

Quale versione di .NET stai usando? – leanne

+0

@leanne: È .NET 2.0, ma ho anche provato anche .NET 3 e .NET 3.5 e .NET 4.0. –

+0

+1 perché ho appena avuto lo stesso problema e questa domanda è utile! Ma tecnicamente si tratta di una "chiave mnemonica", non di una chiave acceleratrice, credo? – MarkJ

risposta

2

Questo è un comportamento normale per .NET ("in base alla progettazione", si dice).

Ecco un articolo che dovrebbe aiutare con il vostro problema - non è semplice o abbastanza per cominciare, ma una volta fatto, eventuali tasti di scelta rapida impostati possono essere facilmente aggiunti:

Building Keyboard Accelerators into .NET Windows Forms Applications - Code Guru

Fondamentalmente questa soluzione implica la creazione di una classe, il caricamento di una tabella hash e l'override di ProcessCmdKey per configurare il proprio gestore di acceleratori.

5

È possibile modificare questo comportamento incollando questo frammento nel modulo: assicurarsi

protected override bool ProcessDialogChar(char charCode) { 
     if ((Control.ModifierKeys & Keys.Alt) == Keys.None) return false; 
     return base.ProcessDialogChar(charCode); 
    } 

non al 100% questo non avrà altri effetti collaterali, la manipolazione in WinForms tastiera è contorto per usare un eufemismo.

+3

Grazie, ho eseguito lo stesso override di ProcessMnemonicChar nei controlli che ricevono accelerazione. –

Problemi correlati