在WPF中从一个窗口切换到另一个窗口并使其处于活动状态

时间:2018-03-21 17:57:42

标签: c# wpf xaml visual-studio-2012

我是WPF的新手,我正在尝试建立一个数据库系统。我目前拥有的是Login窗口。当您输入用户名和密码时,您应该转到另一个窗口StudentInfoSystem。我使用的代码非常基本和常见。

var info = new StudentInfoSystem.MainWindow();
info.Show();        
this.Close();

那么,这样做,就是在你按下登录按钮后,你会转移到StudentInfoSystem并关闭登录窗口。我对Show()的问题是它打开一个窗口并立即返回,对吧?它不会等待新窗口关闭。所以,我的问题是如何打开一个新窗口并使用它?当我说工作时,我的意思是在我的文本框中显示信息(在新打开的窗口中),具体取决于用户的角色等等。

3 个答案:

答案 0 :(得分:1)

尝试window.Activate()关注新窗口和/或[any element].Focus()以关注窗口中的任何元素。

答案 1 :(得分:1)

我猜测上面的代码位于登录窗口的按钮单击处理程序中,这将使登录窗口成为StudentInfoSystem窗口的父级。
由于WPF将在关闭父窗口时关闭父窗口和任何子窗口,因此在调用

时,StudentInfo窗口也将关闭
this.Close();

一个选项可能是调用

this.Hide();

但是没有看到你的应用程序的其余部分是如何设置的,不是100%确定这是最好的方法。

或许可以看到这些问题:

  1. wpf-create-sibling-window-and-close-current-one

  2. how-to-close-current-window-in-code-when-launching-new-window

答案 2 :(得分:0)

据我了解,这应该做你想做的事:

info.ShowDialog();

您还可以查看ShutdownMode属性。我宁愿说,登录窗口是你想要在登录后关闭,但做你想要的:)。使用ShutdownMode属性:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);    
        this.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose;
    }
}