在这里读了类似的帖子已经有一段时间了,我确实找到了一个解决方案但它是用虚拟代码而我不知道我做错了什么。
我有2个表单,当主表单加载时我想隐藏它并显示form2(登录表单)
代码看起来像这样。
private void Form1_Load(object sender, EventArgs e)
{
login loginform = new login();
loginform.Show();
this.Hide();
}
但是当我运行程序时,两个表单都是打开的并且可见。
我做错了什么?不应该隐藏主要形式吗?
答案 0 :(得分:1)
Hide
方法对Load
事件没有任何影响,因为尚未创建句柄。
您有两种选择:
使用Shown
事件(或更好的HandleCreated
事件)并在满足条件时将其隐藏(如变量'登录表单未显示')
将登录表单显示为开始表单,然后打开“#”主页'形成。您可以passing an ApplicationContext
around and pass on control to the main form完成此操作。
答案 1 :(得分:0)
你可以在所有者财产的帮助下完成,这是工作示例
主要表单
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var loginFormMax = new LoginFormMax { Owner = this };//save main form as owner inside child form
loginFormMax.Show();
}
}
儿童表格
public partial class LoginFormMax : Form
{
public LoginFormMax()
{
InitializeComponent();
}
private void LoginFormMax_Shown(object sender, EventArgs e)
{
var owner = this.Owner;
owner.Hide();//now you have control over owner form, just hide it
}
private void LoginFormMax_FormClosing(object sender, FormClosingEventArgs e)
{
var owner = this.Owner;
owner.Show();//now you have control over owner form, just show it again
}
}