【问题标题】:Closing MainWindow hides child window关闭 MainWindow 隐藏子窗口
【发布时间】:2016-03-18 17:47:34
【问题描述】:

当从子窗口 (pgDashboard) 关闭我的主窗口 (pgLogin) 时,我的子窗口根本不想显示。在我的previous question 中,我将“ShutdownMode”设置为“OnExplicitShutdown”,这样当我关闭主窗口时,整个应用程序不会关闭。现在唯一的问题是我的应用程序没有关闭,但我的子窗口根本不显示。

这是我在主窗口(pgLogin)中的编码:

Window nextWindow = null;
nextWindow = new pgDashboard();
nextWindow.Owner = this;
this.Hide();
nextWindow.Show();

还有我的子窗口(pgDashboard):

public static T IsWindowOpen<T>(string name = null) where T : Window
{
    var windows = Application.Current.Windows.OfType<T>();
    return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}


private void HAZEDashboard_Loaded(object sender, RoutedEventArgs e)
{
    var credentials = this.Owner as pgLogin;
    credentials.txtEmailAddress.Text.ToString();

    var window = IsWindowOpen<pgLogin>();

    if (window != null)
    {
        window.Close();
    }
}

知道为什么会发生这种情况吗?

编辑:刚刚做了一个测试,我可以看到当我关闭主窗口时,我的子窗口也因某种原因关闭,因为当我尝试对我的孩子调用 this.Show();窗口,它给了我这个错误:

在窗口关闭后无法设置可见性或调用 Show、ShowDialog 或 WindowInteropHelper.EnsureHandle。

编辑2:我认为问题可能是因为我将主窗口(@98​​7654330@)设置为子窗口的所有者(pgDashboard)?

【问题讨论】:

标签: c# wpf


【解决方案1】:

我想通了。这就是我所做的:

我的主窗口(pgLogin):

Window nextWindow = null;
nextWindow = new pgDashboard();
App.Current.MainWindow = nextWindow;
nextWindow.Show();

我的子窗口(pgDashboard):

public static T IsWindowOpen<T>(string name = null) where T : Window
{
    var windows = Application.Current.Windows.OfType<T>();
    return string.IsNullOrEmpty(name) ? windows.FirstOrDefault() : windows.FirstOrDefault(w => w.Name.Equals(name));
}

private void HAZEDashboard_Loaded(object sender, RoutedEventArgs e)
{
    var window = IsWindowOpen<pgLogin>();

    if (window != null)
    {
        var credentials =  window.txtEmailAddress.Text.ToString();
        window.Close();
    }
}

我没有将子窗口(@98​​7654325@)的所有者设置为pgLogin,因为当我关闭主窗口(@98​​7654327@)时,主窗口拥有的所有窗口也会关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2012-10-14
    • 2014-08-13
    相关资源
    最近更新 更多