我开发了一个csharp应用程序,我想在应用程序的运行中同时显示身份验证表单和主表单,并且在我进行正确的身份验证之前,应该禁用主表单。我尝试了这个代码,但它打开了两个主要形式,一个禁用,一个在正确的身份验证后启用:
public Form1()
{
InitializeComponent();
Form form2 = new Form2();
form2.Show();
form2.Enabled = false;
}
并在验证表单的ok按钮中输入此代码:
Form1.ActiveForm.Hide();
Form form2 = new Form2();
form2.ShowDialog(this);
提前致谢
答案 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();
}