2010-07-26 16 views
14
private void screensaverWindow_Load(object sender, System.EventArgs e) 
{    
    this.BringToFront();    
    this.Focus(); 
    this.KeyPreview = true; 
    this.KeyDown += new KeyEventHandler(onkeyDown);    
}   

onKeyDown() non viene mai chiamato. Qualche idea del perché?Windows.Form non attiva keyDown evento

MODIFICA: Questo funziona in modalità di rilascio !? Credo che deve essere debugger di Visual Studio interferisce qualche parte

+2

Does concentrarsi andare in un altro controllo, come una casella di testo, dopo che è terminato il caricamento? – w69rdy

risposta

9

sembra funzionare per me:

public Form1() 
{ 
    InitializeComponent(); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.BringToFront(); 
    this.Focus(); 
    this.KeyPreview = true; 
    this.KeyDown += new KeyEventHandler(Form1_KeyDown); 
} 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    Console.WriteLine("test"); 
} 

Esistono controlli figlio sul modulo?

+0

Un'etichetta, ma non sta nemmeno sparando alcun evento chiave. –

+0

Non ho problemi con l'esempio neanche. Sembra funzionare come previsto. Perdi gli altri controlli sulla pagina e poi prova a riprodurli. La mia ipotesi è simile alle altre qui, probabilmente hai un altro controllo che ha il focus. –

0

Per quanto riguarda i menu, sono disponibili i menu con i tasti di scelta rapida? Avevo un problema in cui un menu di scelta rapida era in realtà ingerendo le chiavi di cetain e non passandole a nessuno degli eventi chiave del modulo

53

Ciò è causato dall'intercettazione di eventi da controlli figlio sul modulo. Se questo non è auspicabile, è necessario impostare KeyPreview proprietà del form padre per Vero

+3

Ha fatto il trucco per me! Grazie. – f2lollpll

Problemi correlati