Mã sau đây minh họa một vấn đề mà tôi đang gặp khi đóng cửa sổ con sẽ thu nhỏ cửa sổ chính mà tôi không muốn xảy ra.Đóng cửa sổ con thu nhỏ phụ huynh
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
}
class CustomMessageBox : Window
{
public CustomMessageBox()
{
Owner = Application.Current.MainWindow;
}
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new SomeDialog() { Owner = this }.Show();
}
}
Window1 là cửa sổ ứng dụng chính.
SomeDialog là một cửa sổ bật lên trên một số sự kiện trong Window1 (nhấp đúp vào window1 trong ví dụ) cần phải là modeless.
CustomMessageBox là cửa sổ bật lên trên một số sự kiện trong "SomeDialog" (nhấp đúp vào SomeDialog trong ví dụ) cần phải là phương thức.
Nếu bạn chạy ứng dụng, sau đó bấm đúp vào nội dung của Window1 để hiển thị SomeDialog, sau đó bạn bấm đúp vào nội dung của SomeDialog để hiển thị CustomMessagebox.
Bây giờ bạn đóng CustomMessagebox. Khỏe.
Bây giờ nếu bạn đóng SomeDialog, Window1 sẽ thu nhỏ? Tại sao nó giảm thiểu và làm thế nào tôi có thể ngăn chặn nó?
Chỉnh sửa: Có vẻ như cách giải quyết khá đơn giản, sử dụng kỹ thuật được đề xuất bởi Viv.
class SomeDialog : Window
{
protected override void OnMouseDoubleClick(MouseButtonEventArgs e)
{
base.OnMouseDoubleClick(e);
new CustomMessageBox().ShowDialog();
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
base.OnClosing(e);
Owner = null;
}
}
Tôi gặp vấn đề tương tự với cửa sổ con bắt đầu quá trình mở thư mục (ví dụ: 'Process.Start (" C: \\ ")'). Câu trả lời được chấp nhận làm việc cho tôi. –