繁体   English   中英

C#for循环中的变量

[英]Variable in C# for loop

我的申请表中有很多按钮。 我想检查每个按钮的文字(比较)。 我该如何实现?

for (i = 1; i < 30; i++) 
{
   if (this.button1.Text == "Hello") //here is PROBLEM
   {
      //..some statement
   }   
}

因此,下一次this.button 1 .Text必须更改为this.button 2 .Text,依此类推...

this.button [i]。文本不起作用。

按钮不是数组。 每个对象都是谨慎的对象,是其容器的子代。

理想情况下,您需要构建按钮的集合(数组,列表等)并遍历该集合,而不是使用索引变量(i)。

这是一个很好的方法: https : //stackoverflow.com/a/3426721/820068

这是正确的语法:

foreach (Control button in this.Controls)
{
     if (button.GetType() == typeof(Button) && button.Text == "Hello")
     {
           //..some statement    
     }
}

我很确定这是Windows窗体。 在Windows窗体中,您可以像这样迭代控件。

foreach (Control c in panel.Controls)
{
    string cType = c.GetType().ToString();

    // check all buttons
    if (cType == "System.Web.UI.WebControls.Button")
    {
        if(((Button)c).Text == "Hello")
        {

        }
    }
}

因此,代码要做的是迭代面板内的所有控件,并检查每个控件的类型是否为按钮。

更新:正如韦斯利所说,更好的方法是像这样实现它

 if (c is Button && c.Text.Equals("Hello")) {
for (int i = 1; i < 3; i++)
        {
            var buttonName = "button" + i;
            Button button = this.Controls.Find(buttonName, true).FirstOrDefault() as Button;
            string text = button.Text;
        }

试试这个代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM