Làm cách nào để có được sự kiện nhấp vào hộp tối thiểu của cửa sổ WPF?Nhận kích thước hộp tối thiểu khi nhấp vào cửa sổ WPF
Trả lời
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"
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 –
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 (?) ;-)
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 ....
Tại sao bạn cần phải biết khi nào nó được nhấp? Có một lý do mà bạn cần biết rằng so với đăng ký với Window.StateChanged? – Andy