-1

私はメインフォームとしてこの「ホーム」を持っています...そして私は管理者ログインフォームを開く管理者ログインボタンを持っています...しかし、ボタンは管理者ログインフォームの数を

4

4 に答える 4

2

ログイン フォームを表示ShowDialog()-> ログイン フォームが表示されている限り残りのフォームをブロックするか、開いているフォームを追跡し、ログイン フォームが開いているときにボタンをクリックしても何もしません。

最初の例:

private void ButtonClick(object sender, EventArgs e)
{
    var frm = new LoginForm();
    frm.ShowDialog();
}

2 番目の例:

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();
    }
}

3 番目の例 (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、フォームを開いたときに a を設定することです。

bool AdminFormOpen;

private void adminLoginBtn_click()
{
    if(!AdminFormOpen)
    {
        // Open the form.
        AdminFormOpen = true;
    }
}

次に、 で、Admin Formmutator メソッドを使用してこの値をリセットしてください。何かのようなもの:

protected void OnClosed(EventArgs e)
{
      parentForm.setAdminFormOpen(false);
}
于 2013-06-13T10:12:51.647 に答える
0

ブール変数を使用して、フォームが既に存在するかどうかを通知します。

于 2013-06-13T10:13:08.523 に答える