我有这个“HOME”作为主表单......我有一个打开管理员登录表单的管理员登录按钮......但是该按钮应该将管理员登录表单的数量限制为仅
问问题
70 次
4 回答
2
使用 ->显示登录表单ShowDialog()
,只要登录表单可见,这将阻止其他表单,或者跟踪打开的表单,并且在打开登录表单时单击按钮不执行任何操作。
第一个例子:
private void ButtonClick(object sender, EventArgs e)
{
var frm = new LoginForm();
frm.ShowDialog();
}
第二个例子:
private LoginForm form;
private void ButtonClick(object sender, EventArgs e)
{
if (form != null)
{
if (form.Visible)
{
return;
}
form.Show();
}
else
{
form = new LoginForm();
form.Show();
}
}
第三个示例(使用 LINQ):
private void ButtonClick(object sender, EventArgs e)
{
if (Application.OpenForms.Cast<Form>().Any(x => x.GetType() == typeof(LoginForm)))
{
return;
}
var frm = new LoginForm();
frm.Show();
}
于 2013-06-13T10:13:34.703 回答
1
一个简单的解决方案是在boolean flag
打开表单后设置一个。
bool AdminFormOpen;
private void adminLoginBtn_click()
{
if(!AdminFormOpen)
{
// Open the form.
AdminFormOpen = true;
}
}
然后,在 中Admin Form
,确保您通过 mutator 方法重置此值。就像是:
protected void OnClosed(EventArgs e)
{
parentForm.setAdminFormOpen(false);
}
于 2013-06-13T10:12:51.647 回答
1
您可以使用Application.OpenForms集合来检查登录表单是否已打开,而不是为此使用布尔标志:
if (!Application.OpenForms.OfType<LoginForm>().Any())
{
var loginForm = new LoginForm();
loginForm.Show();
}
或使用Form.ShowDialog()将登录表单打开为模态表单。
于 2013-06-13T10:22:00.677 回答
0
如果表单已经存在,请使用布尔变量发出信号。
于 2013-06-13T10:13:08.523 回答