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# WPF窗口隐藏在主应用程序窗口后面。试图把它带到前面_C#_Wpf - Fatal编程技术网

C# WPF窗口隐藏在主应用程序窗口后面。试图把它带到前面

C# WPF窗口隐藏在主应用程序窗口后面。试图把它带到前面,c#,wpf,C#,Wpf,我有一个第三部分的应用程序,它调用一个简单的WPF窗口,这个窗口有一个按钮,可以启动另一个WPF窗口 MainApp->Window1->Window2 代码设置方式应在启动Window2后关闭Window1,该窗口运行良好,但Window2位于MainApp窗口的“后面”,因此不可见。这就是我试图解决的问题 我尝试过的事情: Window.TopMost:这很好,但问题是当我按住Alt+Tab键时,窗口会一直位于所有窗口的顶部 Activate()\Focus():这些都不起作用 我还尝试发送

我有一个第三部分的应用程序,它调用一个简单的WPF窗口,这个窗口有一个按钮,可以启动另一个WPF窗口

MainApp
->
Window1
->
Window2

代码设置方式应在启动
Window2
后关闭
Window1
,该窗口运行良好,但
Window2
位于
MainApp
窗口的“后面”,因此不可见。这就是我试图解决的问题

我尝试过的事情:

Window.TopMost
:这很好,但问题是当我按住Alt+Tab键时,窗口会一直位于所有窗口的顶部

Activate()
\
Focus()
:这些都不起作用

我还尝试发送了一个Alt+Tab键笔划,似乎解决了这个问题,只是
Window1
根本没有关闭

我甚至在不同的SO帖子中尝试了组合
Activate()
\
Focus()
\
TopMost
,但似乎没有任何效果

代码:


业主财产应该做到这一点。请尝试以下代码:

    public MainWindow()
    {
        InitializeComponent();            
        this.Loaded += MainWindow_Loaded;                        
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();    //In your case, object of window2            
        win1.Owner = Application.Current.MainWindow;
        win1.Show();
    }

好的。。我就是这样解决这个问题的。问题是,当我启动主应用程序(第三方)然后加载窗口1时,它是模态的,因此停止了第三方加载(文档)。我从窗口1打开窗口2,然后关闭窗口1。由于它们在同一个线程中,Window1将控制权返回给主应用程序(它到达前端并继续加载),因此Window2被“隐藏”。
作为解决方案,我现在在另一个线程中启动Window 2,这似乎解决了问题。

尝试Window.BringIntoView();我也试过了。。。不起作用。
ShowDialog()
方法是否调用了其中一个窗口?可能重复@Rekshino我也尝试过这些解决方案,但没有帮助您在window1关闭后显示window2,对吗?请在window2上显示您调用的代码。show()?
    public MainWindow()
    {
        InitializeComponent();            
        this.Loaded += MainWindow_Loaded;                        
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();    //In your case, object of window2            
        win1.Owner = Application.Current.MainWindow;
        win1.Show();
    }