我有两个Windows MainWindow和Login。 显示登录位于mainWindow
的按钮this.Hide();
Login li = new Login();
li.Show();
在登录窗口上是一个按钮,它检查密码如何在密码正确的情况下显示MainWindow?
答案 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 - 因此我最初对您正在使用的布局提出疑问!