WPF。如何从另一个窗口隐藏/显示主窗口

时间:2011-07-25 09:37:00

标签: c# wpf show-hide

我有两个Windows MainWindow和Login。 显示登录位于mainWindow

的按钮
this.Hide();
        Login li = new Login();
        li.Show();

在登录窗口上是一个按钮,它检查密码如何在密码正确的情况下显示MainWindow?

4 个答案:

答案 0 :(得分:10)

将参数传递给MainWindow类型的loginwindow。这允许Login窗口具有对MainWindow的引用:

this.Hide();
Login li = new Login(this);
li.Show();

登录窗口:

private MainWindow m_parent;
public Login(MainWindow parent){
    m_parent = parent;
}

//Login Succesfull function

private void Succes(){
    m_parent.Show();
}

答案 1 :(得分:4)

第一个答案很好,但它会创建一个新的空窗口 避免这个问题(重定向到以前创建的窗口)只需修改像这样的构造函数

 public Login(MainWindow parent):this()
{
    m_parent = parent;
}

答案 2 :(得分:2)

怎么样......

this.Hide();
Login li = new Login();
if(li.ShowDialog() == DialogResult.OK){
   //Do something with result
   this.Show();
}

请确保在登录时有类似......

void OnLogin(){
   if(ValidateLogin()){
      this.DialogResult = DialogResult.OK;
      this.Close();
   }
}

答案 3 :(得分:0)

您在UI中使用了哪种布局等?如果您在登录窗口中创建一个模态对话框,那么您是否需要隐藏主窗口?

或者,您可以使用某种“成功登录”标记并将每个窗口的可见性绑定到此值 - 使用转换器来获得所需的结果?有点像:

<Grid>
    <MainWindow Visibility="{Binding Authorized,
                      Converter={StaticResource BoolToVisibilityConverter}}"/>

    <LoginWindow Visibility="{Binding Authorized,
                Converter={StaticResource InvertedBoolToVisibilityConverter}}"/>
</Grid>

这有意义吗?

编辑:显然,网格中的元素实际上不是Windows - 因此我最初对您正在使用的布局提出疑问!