次のコードは、子ウィンドウを閉じることで親ウィンドウが最小化される問題を示しています。子ウィンドウを閉じて親を最小化する
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はメインのアプリケーションウィンドウです。
SomeDialogは、のモードレスである必要があるWindow1内のイベント(この例ではwindow1をダブルクリック)でポップアップするウィンドウです。
CustomMessageBoxは、モーダルである必要がある「SomeDialog」内のイベント(この例ではSomeDialogをダブルクリック)でポップアップするウィンドウです。
アプリケーションを実行し、Window1のコンテンツをダブルクリックしてSomeDialogを表示し、次にSomeDialogのコンテンツをダブルクリックしてCustomMessageboxを表示します。
ここで、CustomMessageboxを閉じます。ファイン。
SomeDialogを閉じると、Window1は最小化しますか?なぜそれが最小限に抑えられ、どうすればそれを止めることができますか?
を編集してください:回避策はVivによってsuggesrtedされた手法を使用するとかなり簡単です。
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;
}
}
ディレクトリを開くプロセスを開始する子ウィンドウでも同じ問題がありました(たとえば、 'Process.Start(" C:\\ ")')。受け入れられた答えが私のために働いた。 –