C# 如何在c应用程序编程中禁用多次单击?

C# 如何在c应用程序编程中禁用多次单击?,c#,C#,在c sharp应用程序中,如果单击一个按钮,则会打开一个对话框,但如果用户多次单击,则会打开更多对话框。如何克服它? 请给我有关此问题的解决方案。如果是桌面应用程序,请使用模式对话框。如果是桌面应用程序,请使用模式对话框。使用ShowDialog功能: using (Form2 frm = new Form2()) { frm.ShowDialog(); } 这将禁用当前表单,仅使新表单可用 或者,您可以禁用该按钮以防止再次单击它 button1.Enabled = false;

在c sharp应用程序中,如果单击一个按钮,则会打开一个对话框,但如果用户多次单击,则会打开更多对话框。如何克服它?
请给我有关此问题的解决方案。

如果是桌面应用程序,请使用模式对话框。

如果是桌面应用程序,请使用模式对话框。

使用ShowDialog功能:

using (Form2 frm = new Form2())
{
    frm.ShowDialog();
}
这将禁用当前表单,仅使新表单可用

或者,您可以禁用该按钮以防止再次单击它

button1.Enabled = false;

但请确保在再次访问按钮时启用该按钮。

使用ShowDialog功能:

using (Form2 frm = new Form2())
{
    frm.ShowDialog();
}
这将禁用当前表单,仅使新表单可用

或者,您可以禁用该按钮以防止再次单击它

button1.Enabled = false;

但请确保在应该再次访问该按钮时启用该按钮。

Furquan给出了一个很好的答案。编辑:乐趣也是如此

如果不能或不希望对话框是模态的,可以添加额外的状态以查看子对话框是否已打开。下面是一些它可能不会编译的伪代码示例:

class MyForm : Form
{
  public void OnButtonClick()
  {
    if(!isSubDialogOpen)
    {
      isSubDialogOpen = true;
      ShowSubDialog();
    }
  }

  private void OnSubDialogClose()
  {
    isSubDialogOpen = false;
  }

  private void ShowSubDialog()
  {
    SubDialog subDialog = new SubDialog(this);
    subDialog.OnClose += OnSubDialogClose;
    subDialog.Show();
  }

  private bool isSubDialogOpen;
}

class SubDialog : Form
{
  // ...
}

福泉有一个很好的答案。编辑:乐趣也是如此

如果不能或不希望对话框是模态的,可以添加额外的状态以查看子对话框是否已打开。下面是一些它可能不会编译的伪代码示例:

class MyForm : Form
{
  public void OnButtonClick()
  {
    if(!isSubDialogOpen)
    {
      isSubDialogOpen = true;
      ShowSubDialog();
    }
  }

  private void OnSubDialogClose()
  {
    isSubDialogOpen = false;
  }

  private void ShowSubDialog()
  {
    SubDialog subDialog = new SubDialog(this);
    subDialog.OnClose += OnSubDialogClose;
    subDialog.Show();
  }

  private bool isSubDialogOpen;
}

class SubDialog : Form
{
  // ...
}

+1.这是在我回答问题时发布的。与使用私有变量相比,我更喜欢禁用按钮。绑定到子对话框上的关闭事件可能是确定何时重新启用按钮的一个好方法,因此您可以尝试将我的答案和乐趣结合起来。+1。这是在我回答问题时发布的。与使用私有变量相比,我更喜欢禁用按钮。绑定到子对话框上的关闭事件可能是确定何时重新启用按钮的一个好方法,因此您可以尝试将“我的答案”和“乐趣”结合起来。+1因为这是一种内置的、直接支持的方式来完成他所寻找的。+1因为这是一种内置的、直接支持的方式来完成他所寻找的。