2010-10-30 14 views
23

In un'applicazione Windows Form, quando si scrive il codice per impostare lo stato attivo su un controllo durante l'avvio dell'applicazione e successivamente dopo aver chiamato una funzione?Come impostare lo stato attivo su un controllo in un'applicazione Windows Form?

Per esempio, se ho un DropDownList, un TextBox e quattro pulsanti e voglio che il Focus sia impostato su DropDownList, dove scrivo il mio codice?

Per impostare lo stato attivo su un controllo particolare all'avvio dell'applicazione, è possibile impostare l'indice di tabulazione su DropDown (con un valore minimo, sotto l'assunto TabStop è impostato su True).

Ora, se l'utente completa un'operazione (per esempio, una delle clic sul pulsante Eventi) e poi aggiorno la discesa e dopo che se voglio impostare la messa a fuoco ... posso farlo come

MyDropDownList.Focus() 

dOMANDA

NB: La domanda è più su dove, non come?

+0

Sì, nel gestore di eventi Click. Cosa altro c'è? –

+0

@Hans Passant: vale per i tempi successivi (dopo un'operazione dell'utente). Posso scriverlo nel Click Event Handler (s) o in una funzione chiamata UpdateDropDownList() che sto chiamando internamente all'interno di un Click Event Handler. Ma per il carico iniziale, dove lo scrivo? In InitializeComponent() o dopo la sua chiamata? – Kanini

risposta

52

Di gran lunga la soluzione più semplice è impostare correttamente la proprietà TabIndex in modo che il controllo "MyDropDownList" abbia l'indice più basso. Il prossimo approccio è farlo nel costruttore. Ma devi usare Select(), il metodo Focus() non può ancora funzionare perché il controllo non diventa visibile fino a tardi.

Public Sub New() 
    InitializeComponent() 
    MyDropDownList.Select() 
End Sub 

Funziona anche nell'evento Load. Focus() inizia a funzionare nell'evento Mostrato.

+0

+1 perché avevo bisogno di inserirlo nell'evento Load per farlo funzionare nella mia app C#! – Hybrid

+0

Apprezzo molto l'uso di .Select(). Era esattamente ciò di cui avevo bisogno. – jeromeyers

Problemi correlati