2009-06-02 5 views

risposta

28

C'è un evento chiamato StateChanged che (dall'aiuto) sembra che potrebbe fare ciò che si desidera.

Si verifica quando la proprietà WindowState della finestra cambia.

L'aiuto dice che è supportato solo in .NET 3.0 e 3.5 in Vista, ma l'ho appena provato su XP e si attiva quando la finestra viene ridotta a icona, ingrandita e ripristinata. Tuttavia, dai miei test, si spara dopo lo lo stato è cambiato, quindi se si vuole fare qualcosa prima che la finestra venga minimizzata, questo potrebbe non essere l'approccio necessario.

Dovrai controllare lo stato attuale per assicurarti che sia corretto.

private void Window_StateChanged(object sender, EventArgs e) 
    { 
     switch (this.WindowState) 
     { 
      case WindowState.Maximized: 
       MessageBox.Show("Maximized"); 
       break; 
      case WindowState.Minimized: 
       MessageBox.Show("Minimized"); 
       break; 
      case WindowState.Normal: 
       MessageBox.Show("Normal"); 
       break; 
     } 
    } 

Ovviamente se stavo solo stampando la condizione userei this.WindowState.ToString();)

Il seguente dovrebbe ottenere aggiunto alla defintion XAML della finestra da Visual Studio:

StateChanged="Window_StateChanged" 
+2

Vedi questa domanda per informazioni su come fare qualcosa ** prima ** la finestra è ridotta a icona http://stackoverflow.com/questions/926758/window-statechanging-event-in-wpf –

0

Spiacente, non si tratta di WPF perché non ho funzionato molto con WPF. Ma un'altra cosa che puoi fare è controllare la proprietà Windowstate durante l'evento Resized of Form. E se è uguale a FormWindowState.Minimized, allora si minimizza il pulsante (?) ;-)

1

Oltre alla risposta di Shoban ...

È possibile utilizzare l'evento Disattivato di Windows, è possibile persino usare StateChange evento, come di seguito

private void Window_Deactivated(object sender, EventArgs e) 
{ 
     if(this.WindowState== WindowState.Minimized) 
      // Do your stuff 

} 

sarebbe utile ....

Problemi correlati