如何在csharp中同时显示两个winforms

时间:2014-11-17 14:06:13

标签: c# winforms

我开发了一个csharp应用程序,我想在应用程序的运行中同时显示身份验证表单和主表单,并且在我进行正确的身份验证之前,应该禁用主表单。我尝试了这个代码,但它打开了两个主要形式,一个禁用,一个在正确的身份验证后启用:

public Form1()
{
    InitializeComponent();
    Form form2 = new Form2();
    form2.Show();
    form2.Enabled = false;
}

并在验证表单的ok按钮中输入此代码:

Form1.ActiveForm.Hide();
Form form2 = new Form2();
form2.ShowDialog(this);

提前致谢

1 个答案:

答案 0 :(得分:4)

显示模态表单。请查看THIS文章。

// C#
private void ShowModalForm
{
   Form f = new Form();
   f.ShowDialog(this);
}

不确定我是否遵循了您的目标。但是,如果身份验证成功,您是否在点击事件中查找此代码?这是你的Ok按钮事件。通过在Hide上使用Form1,您仍然可以将表单保留为打开状态,因此它将是模态的,并阻止使用Form2。关闭Form1即可重新获得对Form2的访问权限。

根据你正在做的事情,虽然你的表格应该被翻转。您的身份验证表单应该是主表单的子项。换句话说,打开需要访问权限的表单,然后启动模式表单以初始化授权。

// This should be on your initialization for the form that requires access.
public MainForm()
{
    AuthenticationForm f = new AuthenticationForm();
    f.ShowDialog();
}

// This should be on your form that grants access.
public AuthenticationForm ()
{

}

private void buttonOK_Click(sender object, EventArgs e)
{
    // Do your authentication here.
    // if successful then close this modal form to return to the MainForm.
    this.Close();
}