2013-06-04 13 views
9

Sto cercando di mettere a fuoco un controllo casella di testo "Cerca" nella mia applicazione per i moduli Windows. Questa casella di testo si trova all'interno di un controllo utente, che si trova all'interno di un pannello che si trova all'interno di un modulo di Windows (se è importante). Ho provato 3 metodi che ho trovato:Come forzare una messa a fuoco su un controllo nei moduli di Windows

// 1 
this.ActiveControl = myTextBox; 

// 2 
myTextBox.Focus(); 

// 3 
myTextBox.Select(); 

nessuno di loro sembra funzionare. Intendo, ad esempio, quando provo il primo, il controllo attivo è veramente impostato su myTextBox, ma quando provo a scrivere qualcosa sulla tastiera, la casella di testo non lo accetta e per prima cosa devo fare clic all'interno della casella di testo. Questo è lo stesso con tutti i metodi. Mi manca qualcosa?

risposta

16

Ok, finalmente trovato la risposta:

Come ho già detto la mia casella di testo è all'interno del controllo utente che si trova all'interno del pannello che si trova all'interno di un modulo. Quando ho bisogno del mio controllo utente lo aggiungo al pannello. Per ottenere attenzione sul mio testo devo concentrarmi in primo luogo il mio controllo utente in modo simile a questo: Nella mia top della forma:

panel.Controls.Add(myUserControl); 
myUserControl.Focus(); 

e poi nel mio controllo utente:

myTextBox.Select(); 

Nota che se io usato: myTextBox.Focus() non funzionerebbe (non so perché). Anche se ho usato myUserControl.Select() invece di myUserControl.Focus() non funzionerebbe neanche.

Questa sembra essere l'unica combinazione che funziona.

Problemi correlati