之后如何在另一个窗口内打开窗口

时间:2015-07-02 21:25:00

标签: c# wpf window

我有一个主窗口,我想打开一个位于其上方的窗口。但似乎我想要的窗口在主窗口打开之前打开。 要解决这个问题,我需要在mainwindow的初始化组件之后打开窗口吗?

public partial class MainWindow : Window
{      
    public MainWindow ()
    {
        InitializeComponent();

        OpenProjectsView();
    }

    private void OpenProjectsView()
    {
        ProjectsView projectWindow= new ProjectsView();
        projectWindow.Owner = this;
        projectWindow.ShowDialog();
    }
}

4 个答案:

答案 0 :(得分:1)

在Form.Activated事件中调用OpenProjectsView()。

private void MainWindow_Activated(object sender, System.EventArgs e)
{ 
    OpenProjectsView();
}

答案 1 :(得分:1)

public partial class MainWindow : Window
{      
    public MainWindow ()
    {
        InitializeComponent();

        OpenProjectsView();
    }

    private void OpenProjectsView()
    {
        ProjectsView projectWindow= new ProjectsView();
        projectWindow.Owner = this;
        projectWindow.TopMost = true;
        projectWindow.Show();
    }
}

这将使第二个窗口位于第一个窗口的顶部,但是因为您在父窗口构造函数中创建并显示它,它将始终在父窗口之前显示(获取实例化)。

此方法允许这种情况发生,同时您仍然可以与两个窗口进行互动(Show()而不是ShowDialog())。

正如其他人所提到的,你可以在一个事件中实例化你的窗口,而不是构造函数,但这取决于你需要什么......你的问题有点含糊不清! :O)

答案 2 :(得分:0)

试试这个。它将在渲染主窗口后启动窗口。

public MainWindow()
{
    InitializeComponent();
    this.ContentRendered+= Window_ContentRendered;
}

private void Window_ContentRendered(object sender, RoutedEventArgs e)
{
    OpenProjectsView();
}

答案 3 :(得分:0)

试试这段代码

projectWindow.IsMdiContainer = True; 
projectWindow.MdiParent = this;
projectWindow.Show();