-1

我有这个“HOME”作为主表单......我有一个打开管理员登录表单的管理员登录按钮......但是该按钮应该将管理员登录表单的数量限制为仅

4

4 回答 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 回答