2011-12-11 1 views
7

Come posso forzare la messa a fuoco di un modulo? .Focus() non funziona per me.Come forzare l'attivazione del modulo?

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     form.Focus(); 
    } 
} 

Cosa sto facendo male?

risposta

6

Va

private void button1_Click(object sender, EventArgs e) { 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) { 
      form.Show(); 
    } else { 
     Application.OpenForms[form.Name].Focus(); 
    } 
} 
+0

non ha funzionato per me. se il modulo è ridotto a icona e faccio clic su button1, la forma non è attivata (messa a fuoco). – Jack

+0

scusa, hai visto la modifica? quale hai provato? Seleziona() o Focus()? –

+0

funziona bene ora. Grazie! ma per curiosità, perché fare riferimento alla variabile 'form' non funziona? – Jack

14

Hai bisogno di mostrare la forma prima - utilizzare il metodo Show():

var form = new loginForm(); 
form.Show(); 

Edit: (domanda aggiornato)

Per un modulo esistente chiamando Activate() potrebbe essere più appropriato, questo porta anche il modulo in primo piano:

private void button1_Click(object sender, EventArgs e) 
{ 
    var form = new loginForm(); 
    if (Application.OpenForms[form.Name] == null) 
    { 
      form.Show(); 
    } 
    else 
    { 
     Application.OpenForms[form.Name].Activate(); 
    } 
} 

Se il modulo è ridotto a icona è necessario sottoscrivere essere alla manifestazione Activated cambiare la vostra condizione finestra per FormWindowState.Normal:

private void loginForm_Activated(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Normal; 
} 
+0

rigth, ho modificato, controllare il mio codice vero e proprio favore. :) – Jack

8

Prova questa:

this.BringToFront(); 
this.Activate();