C# 如何在不关闭第一个表单的情况下隐藏第二个表单对话框?
我正在使用Visual studio 2012。我创建了两个表单,form1有一个打开form2的按钮,form2有一个“退出”按钮,它将带我回到form1 这是我在表格1中的代码:C# 如何在不关闭第一个表单的情况下隐藏第二个表单对话框?,c#,winforms,forms,visual-studio-2012,login,C#,Winforms,Forms,Visual Studio 2012,Login,我正在使用Visual studio 2012。我创建了两个表单,form1有一个打开form2的按钮,form2有一个“退出”按钮,它将带我回到form1 这是我在表格1中的代码: private void btnRecords_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.ShowDialog(); this.Hide(); } 从表格2: private void btnEx
private void btnRecords_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
this.Hide();
}
从表格2:
private void btnExit_Click(object sender, EventArgs e)
{
this.Hide();
}
我知道我可以使用
frm2.Show();this.Hide()代码>而不是frm2.showdialog()代码>。但是,我需要我的表格1的状态保持不变。My form1包含一个登录表单,仅当登录正确时才启用按钮(如“新建表单”按钮)。因此,如果我隐藏form1并再次显示它,登录将重置 在Form2
类中添加一个属性来存储对父窗体的引用:
public Form ParentForm { get; set; }
然后在Form1
上,您可以通过这种方式显示Form2
,同时隐藏Form1
:
private void btnRecords_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ParentForm = this;
this.Hide();
frm2.ShowDialog();
}
关闭Form2
时,您可以再次显示Form1
:
private void btnExit_Click(object sender, EventArgs e)
{
this.ParentForm.Show();
this.Close();
}
或者更好的方法是,通过以下方式关闭Form2
:
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.ParentForm != null)
this.ParentForm.Show();
}
如果用户使用标题栏中的交叉按钮关闭Form2
,这也会显示Form1
。为什么不在主表单的表单加载事件中处理登录。并非每次窗体重新获得焦点时都会运行窗体加载。如果他们没有在加载时登录,是否关闭他们的表单?在我的例子中,我向域管理员发送一封带有windows用户用户名的电子邮件,并关闭该程序。他们必须重新启动该计划,以便再次尝试
private void frmMain_Load(object sender, EventArgs e)
{
//Check login
Form frmLogin = new Form();
frmLogin.ShowDialog();
if (frmLogin.LoginSucessful == true)
{
btnRecords.Enabled = true;
lblWarning.Visible = false;
}
else
{
btnRecords.Enabled = false;
lblWarning.Visible = true;
lblWarning.Text = "You must first Login";
}
//other setup code here
}
因为我的登录屏幕和我的主菜单按钮位于@Grantwiney的同一页面上,所以您必须创建一个包含所有作品的主表单,子表单包含登录表单。所以你可以随时随地从main调用子表单。@Louis.clat抱歉,我对这个概念有点模糊。我只是有不同的表格,表格一,表格二,表格三。我是否必须将一个设置为主要,其他设置为子?它是否会与仅仅拥有多种形式不同?