单击按钮允许表单数量

时间:2013-06-13 10:10:28

标签: c# winforms

我将此“主页”作为主要表单...并且我有管理员登录按钮,用于打开管理员登录表单...但该按钮应将管理员登录表单的数量限制为仅

4 个答案:

答案 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)

使用布尔变量来表示表单是否已经存在。