Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当ChildWindow打开和关闭MessageBox时,MainWindow最小化_C#_Wpf - Fatal编程技术网

C# 当ChildWindow打开和关闭MessageBox时,MainWindow最小化

C# 当ChildWindow打开和关闭MessageBox时,MainWindow最小化,c#,wpf,C#,Wpf,该程序有一个主窗口,带有打开子窗口的按钮。当其中一个子项显示messagebox时,当我关闭该子项时,主窗口最小化 protected void EventBtn_Click(object sender, RoutedEventArgs e) { Child child = new child(); child.Show(); child.Owner = this; } 解决方案: 感谢@Oscar Martinez 儿童: public partial class

该程序有一个主窗口,带有打开子窗口的按钮。当其中一个子项显示messagebox时,当我关闭该子项时,主窗口最小化

protected void EventBtn_Click(object sender, RoutedEventArgs e)
{
    Child child = new child();
    child.Show();
    child.Owner = this;
} 
解决方案:

感谢@Oscar Martinez

儿童:

public partial class Child: Window
{
    public Child()
    {
        InitializeComponent();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Hello world!");
    }

    // this is what you need to add
    protected override void OnClosing(CancelEventArgs e)
    {
        this.Owner = null;
    }
}
public partial class Child: Window
{
    public Child()
    {
        InitializeComponent();
    }
    private void button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Hello world!");
    }

// this is what you need to add
    private void Child_Closing(object sender, System.ComponentModel.CancelEventArgs e)     
    {
        this.Owner = null;
    }
}
家长:

public partial class Parent: Window
{
    public Parent()
    {
        InitializeComponent();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Child child = new Child();
        child.Show();
        child.Owner = this;
    }
}
 public partial class Parent: Window
    {
        public Parent()
        {
            InitializeComponent();
        }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Child child = new Child();
        child.Show();
        child.Owner = this;
    }
}

我也试过了,但就像沙鲁兹一样,它从未发生过

试试这个,也许它可以帮助你:

protected void EventBtn_Click(object sender, RoutedEventArgs e)
{
    using (Child child = new Child())
    {
         child.ShowDialog();
    }
} 

我也有同样的行为。通过处理
表单的
关闭
事件,可以轻松解决此问题

儿童:

public partial class Child: Window
{
    public Child()
    {
        InitializeComponent();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Hello world!");
    }

    // this is what you need to add
    protected override void OnClosing(CancelEventArgs e)
    {
        this.Owner = null;
    }
}
public partial class Child: Window
{
    public Child()
    {
        InitializeComponent();
    }
    private void button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Hello world!");
    }

// this is what you need to add
    private void Child_Closing(object sender, System.ComponentModel.CancelEventArgs e)     
    {
        this.Owner = null;
    }
}
家长:

public partial class Parent: Window
{
    public Parent()
    {
        InitializeComponent();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Child child = new Child();
        child.Show();
        child.Owner = this;
    }
}
 public partial class Parent: Window
    {
        public Parent()
        {
            InitializeComponent();
        }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        Child child = new Child();
        child.Show();
        child.Owner = this;
    }
}
如果最小化父对象,子对象也会最小化

protected void EventBtn_Click(object sender, RoutedEventArgs e)
{
    Child child = new child();
    child.Show();
    child.Owner = this;
} 

如果关闭子窗口,父窗口不会最小化。

父窗口不会最小化,它只是返回其他应用程序。要避免这种情况,请设置父窗口的最顶层属性

public ParentWindow()
    {
        InitializeComponent();
        this.Topmost = true;
    }
然后,创建子窗口,如下所示

private void button_Click(object sender, RoutedEventArgs e)
{
    Child child = new Child();
    child.Owner = this;
    child.Show();        
}

你的问题是什么?我尝试过这种从未发生过的事情,但你最好在关上孩子后专注于你的主窗口window@Lithium问题是我如何避免它我不能这样做,因为子窗口必须由主窗口拥有。当我最小化主窗口时,如果我改变了这一点,子窗口就不会最小化,它还会在任务栏上显示另一个窗口。如果最小化主窗口,子窗体也会最小化。测试一下。对不起,我没有正确阅读代码。我认为child.Owner=null;句子在主窗口中。谢谢。ShowDialog的问题是,当我打开一个子窗口时,它会冻结主窗口,同时冻结主窗口中的最小化和关闭按钮,我需要这些按钮工作。我无法重现您的错误。当您使用ShowDialog打开窗口时,主窗口无法使用。放置child.Owner的孔点=此;因为我希望当我最小化主窗口时,子窗口也会最小化。如果我不能使用主窗口,我根本不能这样做。这也可以,但我更喜欢另一个选项,因为我不希望主窗口总是位于所有应用程序之上。如果我点击任务栏中的其他应用程序,我的应用程序需要返回该应用程序,使用该配置,只有通过单击按钮才能最小化主窗口。