2009-06-02 33 views

Trả lời

28

Có một sự kiện được gọi là StateChanged (từ trợ giúp) có vẻ như nó có thể làm những gì bạn muốn.

Xảy ra khi cửa sổ WindowState thay đổi thuộc tính.

Trợ giúp nói nó chỉ được hỗ trợ trong .NET 3.0 và 3.5 trong Vista, nhưng tôi đã thử trên XP và nó sẽ kích hoạt khi cửa sổ được thu nhỏ, phóng to và phục hồi. Tuy nhiên, từ thử nghiệm của tôi, nó bắn sau trạng thái đã thay đổi, vì vậy nếu bạn muốn làm điều gì đó trước khi cửa sổ thu nhỏ, điều này có thể không phải là cách tiếp cận bạn cần.

Bạn sẽ phải kiểm tra trạng thái thực tế để đảm bảo trạng thái chính xác.

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

Rõ ràng là nếu tôi chỉ in ra tiểu bang tôi muốn sử dụng this.WindowState.ToString();)

Sau đây nên được bổ sung vào defintion XAML của cửa sổ của bạn bằng Visual Studio:

StateChanged="Window_StateChanged" 
+2

Xem câu hỏi này để biết thông tin về cách thực hiện điều gì đó ** trước ** cửa sổ được thu nhỏ http://stackoverflow.com/questions/926758/window-statechanging-event-in-wpf –

0

Xin lỗi, đây không phải là về WPF vì tôi chưa làm việc nhiều với WPF. Nhưng một điều nữa bạn có thể làm là kiểm tra tài sản Windowstate trong sự kiện Resized của Form. Và nếu nó bằng FormWindowState.Minimized thì nút thu nhỏ được bấm (?) ;-)

1

Ngoài câu trả lời của Shoban ...

Bạn có thể tận dụng sự kiện Đã hủy kích hoạt của Cửa sổ, bạn có thể thậm chí sử dụng StateChange tổ chức sự kiện như sau

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

} 

nó sẽ giúp ....

Các vấn đề liên quan