c# - 组合for循环

标签 c#

我正在做一个有多个按钮和文本框的程序。我现在创建的程序甚至还没有完成 50%,但代码行超过 5000 行,这使得程序太大了。有没有办法组合这些 for 循环语句:

点击第一个文本框。

var btn = new[] { btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14 };
for (int i = 0; i < 14; i++)
{
    if (txt1.Text == btn[i].Text)
    {
        txt1.Text = "";
        btn[i].Visible = true;
        break;
    }
}

点击第二个文本框。

var btn = new[] { btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14 };
for (int i = 0; i < 14; i++)
{
   if (txt2.Text == btn[i].Text)
   {
      txt2.Text = "";
      btn[i].Visible = true;
      break;
   }
}

还有更多文本框。

最佳答案

仔细查看您正在使用的代码,根据 TextBox 更改的是 TextBox 本身,以便您可以接受它作为函数的参数并将其余语句包装在函数中。然后它将检查条件并更改按钮的可见性。可能如下所示:

 var arrayButtons = new Button[] { btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14 };
 // Let the array be Global so that we can avoid defining the same every call
 public void ChangeButtonVisibility(TextBox currentText)
 {
     for (int i = 0; i < arrayButtons.Length; i++)
     {
         if (currentText.Text == arrayButtons[i].Text)
         {
             currentText.Text = "";
             arrayButtons[i].Visible = true;
             break;
         }
     }
 }

这样你就可以在点击TextBox1时调用这样的方法:

ChangeButtonVisibility(TextBox1);

对于 TextBox2 Clicked 就像这样

ChangeButtonVisibility(TextBox2);

关于c# - 组合for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39341178/

相关文章:

c# - 如何在 NUnit 中编写需要括号的流畅约束

C# Hangman IndexOf 循环

c# - XElement 或 XDocument 上的 XPathEvaluate 之间的区别?

c# - 使用网络服务将文档上传到 Sharepoint 2013 Online

c# - C# 中的数组数组

c# - 公共(public)静态方法+接口(interface)

c# - skiasharp 中是否有 system.drawing.drawing2D.GraphicsPath 的替代方案?

c# - 服务错误 Service Fabric 缺少代码

c# - 字节溢出评估为零而不是异常?

c# - GetHostAddresses 不同的错误代码