【问题标题】:How is it possible to run a code only 1 time?怎么可能只运行一次代码?
【发布时间】:2021-11-22 19:56:42
【问题描述】:

我希望此代码中的 MessageBox 仅运行 1 次。我希望它只显示一次。我该怎么做?



    if(textBox1.Text != "")
    
    {
     listBox1.Items.Add(textBox1.Text);
        
        textBox1.Clear();
    }
    
    else
    {
      DialogResult click = MessageBox.Show("Info Screen", "TextBox is Empty. Do you want to add a 
  blank space?", MessageBoxButtons.OKCancel);
    
    if(click==DialogResult.OK)
    
    {
    
    listBox1.Items.Add(textBox1.Text);
    
    }
    
    }

【问题讨论】:

  • 你可以在你的类中添加一个bool _messageBoxShown;,第一次后设置为true,并在显示消息框之前检查它。

标签: c# windows-forms-designer c#-5.0


【解决方案1】:

创建一个布尔值并使用 if 语句,并在该 if 语句中将布尔值设为 false 并显示您的消息框

bool boolMessage = true;

if(boolMessage == true)
{
MessageBox.Show("One time");
boolMessage = false;
}

【讨论】:

    【解决方案2】:

    如果消息已显示,则创建一个布尔类型的全局变量并保存标记。然后在你的代码中添加

    全球: bool isFirstTime = true;

    在您的代码中:

    if (isFirstTime) {
          DialogResult click = MessageBox.Show("Info Screen", "TextBox is Empty. Do you want to add a 
      blank space?", MessageBoxButtons.OKCancel);
    
          isFirstTime = false;
    }
    

    【讨论】:

      【解决方案3】:

      我认为在您的情况下添加布尔标志只是代码污染。您可以通过其他方式解决此问题。 => 您希望 MessageBox 何时显示?当文本框内容等于 "" 并且您希望它只运行一次时。为什么不在显示消息框之前检查列表框中是否已经存在""?像这样的:

      else
      {
         if(listbox1.Items.IndexOf("") > -1)
            return;
      
         // continue with displaying the messagebox
      }
      

      【讨论】:

        【解决方案4】:

        尝试使用布尔值并使用 if 来确保代码仅在布尔值为真时运行,然后在 if 内部将布尔值设置为假。

        您也可以尝试使用函数并调用一次。

        我不确定我是否回答了你的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-03
          • 2016-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多