我将此“主页”作为主要表单...并且我有管理员登录按钮,用于打开管理员登录表单...但该按钮应将管理员登录表单的数量限制为仅
答案 0 :(得分: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();
}
答案 1 :(得分: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);
}
答案 2 :(得分:1)
您可以使用Application.OpenForms集合检查登录表单是否已打开,而不是使用布尔标志:
if (!Application.OpenForms.OfType<LoginForm>().Any())
{
var loginForm = new LoginForm();
loginForm.Show();
}
或使用Form.ShowDialog()以模式形式打开登录表单。
答案 3 :(得分:0)
使用布尔变量来表示表单是否已经存在。