2009-06-02 6 views
15

WPFウィンドウの最小化ボックスクリックイベントを取得するにはどうすればよいですか?WPFウィンドウの最小ボックスクリックを取得する

+0

なぜあなたはそれがクリックされた時に知っておく必要がありますか?それを知り、それをWindow.StateChangedに登録する必要がある理由はありますか? – Andy

答えて

28

StateChangedと呼ばれるイベントがあります。

ウィンドウのWindowState プロパティが変更されたときに発生します。

ヘルプは、Vistaでは.NET 3.0および3.5でのみサポートされていると言いますが、XPで試したところ、ウィンドウが最小化、最大化、復元されたときに起動します。しかし、私のテストでは、の後にが発生しますので、ウィンドウを最小化する前に何かしたいのであれば、これは必要な方法ではないかもしれません。

実際の状態が正しいことを確認する必要があります。

明らか
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; 
     } 
    } 

私はちょうど私がthis.WindowState.ToString()を使用したい状態をプリントアウトした場合。)

以下は、Visual Studioによって、あなたのウィンドウのXAMLのdefintionに追加されますする必要があります

StateChanged="Window_StateChanged" 
+2

ウィンドウが最小化される前に**何かを行うことについてのこの質問を参照してください。http://stackoverflow.com/questions/926758/window-statechanging-event-in-wpf –

0

申し訳ありませんが、私はWPFであまり働いていないので、これはWPFに関するものではありません。しかし、あなたができるもう一つは、FormのResizedイベント中にWindowstateプロパティをチェックすることです。そして、それがFormWindowState.Minimizedと等しい場合、最小化ボタンがクリックされます。(?);-)

1

さらに、ショーバンの答えに...

あなたはウィンドウのDeactivatedイベントを利用することができますでも....

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

} 
それが役立つだろう

以下のようにのStateChangeイベントを使用

関連する問題