首页 > 解决方案 > C#.net:意外双击一个按钮显示2种不同的形式

问题描述

所以这是我的代码:

   private void loginbtn_Click(object sender, EventArgs e)
   {
      LogIn();
   }
    private void LogIn()
    {
        //some code to validate users
        //if user and password is in db, show Form2 and record login event to Audit Trail table
    }

我从来不知道这个问题可能会发生,直到我不小心按了两次 enter ,因为我设置loginbtnAcceptButtonfor Form1,突然,Form2我的屏幕上弹出了两个 ,所以我重新启动了我的程序并尝试双击loginbtn来检查问题,是的,两个Form2's 再次出现在我的屏幕上。这只发生在意外双击时,而不是当我单击一次按钮或在Form1. 有人请告诉我如何防止它运行两次?我如何解决它?太感谢了。

标签: c#winforms

解决方案


一种可能的解决方案是声明一个布尔变量 ,IsShowing它表示true何时Form2显示,false何时不显示。然后你可以写:

private void loginbtn_Click(object sender, EventArgs e)
{
   if (!IsShowing) 
     LogIn();
}

我能想到的另一个解决方案是设置Form2为模态。这样做,第二个实例将不再出现。

第三种解决方案是在Form2显示后禁用按钮。


推荐阅读