我有四个webbrowsers,每个都名为web1,web2等...我如何为它们使用for循环?

时间:2013-06-08 22:52:09

标签: c# for-loop

我有一个for循环和四个webbrowsers。他们被称为:

  • WEB1
  • WEB2
  • WEB3
  • WEB4

我有一个for循环:

for (int i = 1; i <= 4; i++)

我想编写一次代码,并让它在所有四个浏览器上执行。我认为它是这样的:

web[i.toString()]

然而,输出:

The name "web" does not exist in the current context

我该怎么做?

2 个答案:

答案 0 :(得分:2)

使用数组

var webBrowsers = new[] { Web1, Web2, Web3, Web4 };

for(int i = 0; i < webBrowsers.Length; i++)
{
    webBrowsers[i]... // Do something with each
}

通常,只要您拥有带有序列名称的变量(例如Web1 .. Web4),就可以很好地表明您应该使用数组。就个人而言,我会重构代码,以便删除对单个webBrowser控件的所有引用,并专门使用数组。但是,这可能超出了这个问题的范围。

进一步阅读:

答案 1 :(得分:1)

您需要按名称恢复控件,而不是静态,但动态:

var matches = this.Controls.Find(string.Format("Web{0}", i), true);

// this means you can't find that control
if (matches.Length == 0) { continue; }

// now you can cast the first control if you'd like
var web = matches[0] as WebBrowser;