2009-06-02 13 views

Respuesta

28

Hay un evento llamado StateChanged que (de la ayuda) parece que podría hacer lo que quiera.

Se produce cuando cambia la propiedad WindowState de la ventana.

La ayuda dice que solo es compatible con .NET 3.0 y 3.5 en Vista, pero acabo de probarlo en XP y se dispara cuando la ventana se minimiza, se maximiza y se restaura. Sin embargo, de mi prueba, se dispara después de el estado ha cambiado, por lo que si desea hacer algo antes de minimizar la ventana, este podría no ser el enfoque que necesita.

Deberá verificar el estado real para asegurarse de que sea correcto.

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; 
     } 
    } 

Obviamente, si sólo estaba imprimiendo el estado que haría uso de this.WindowState.ToString();)

debe agregarán al Defintion XAML de la ventana por Visual Studio En el siguiente:

StateChanged="Window_StateChanged" 
+2

Consulte esta pregunta para obtener información sobre cómo hacer algo ** antes ** la ventana está minimizada http://stackoverflow.com/questions/926758/window-statechanging-event-in-wpf –

0

Lo sentimos, esto no es sobre WPF ya que no he trabajado mucho con WPF. Pero una cosa más que puede hacer es verificar la propiedad de Windowstate durante el evento de tamaño restructurado. Y si es igual a FormWindowState.Minimized, entonces se hace clic en el botón de minimizar (?) ;-)

1

Además de la respuesta de Shoban ...

Puede hacer uso del evento Desactivado de Windows, puede incluso utilizar StateChange Se Evento de la siguiente manera

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

} 

que ayudaría ....

Cuestiones relacionadas