Как поэтапно зацикливать объекты Windows forms

#c# #winforms #visual-studio-2010

#c# #winforms #visual-studio-2010

Вопрос:

У меня есть несколько веб-браузеров в моем приложении C #, фактически у меня есть 10. webBrowser0, webBrowser1, webBrowser2 и так далее..

В любом случае, я выполняю цикл для подсчета каждого экрана, чтобы разместить веб-браузер на каждом имеющемся у меня экране, все это делается легко, но в моем цикле, если есть что-то подобное.

 for (index = 0; index <= totalScreens; index  )
{

if (index == 0)
{
webBrowser0.Width = x;
webBrowser0.Height = x;
}

if (index == 1)
{
webBrowser1.Width = x;
webBrowser1.Height = x;
}

}
  

Как вы можете видеть, я удваиваю код довольно сильно, поэтому, если бы я мог обратиться к WebBrowser{index}, это было бы идеально, но это, конечно, не работает.

Ответ №1:

Создайте коллекцию ваших веб-браузеров.

 List<WebBrowser> browsers = new List<WebBrowser> {webBrowser0,webBrowser1};

for (index = 0; index <= totalScreens; index  )
{
    if(index < browsers.Count)
    {
        browsers[index].Width = x;
        browsers[index].Height = x;
    }
}
  

Ответ №2:

Вы могли бы определить массив

 WebBrowser[] browsers = new WebBrowser[] { webBrowser0, webBrowser1, ... };
  

и используйте browsers[index] в своем цикле.

Комментарии:

1. Спасибо всем за вашу поддержку, я выбрал это решение, поскольку оно было небольшим и базовым, именно то, что нужно моему простому приложению.

Ответ №3:

Что вы могли бы сделать, так это использовать

 var myBrowsers = new List<WebBrowser>().  
  

Затем вы добавляете свои веб-браузеры с

 myBrowsers.Add(new WebBrowser());  // Do this 10 times for 10 browsers.
  

Таким образом, вы можете использовать

 myBrowser[index]
  

или получить доступ к каждому из них в цикле

 foreach (var aBrowser in myBrowsers)
{
   aBrowser...
}
  

или

 for (var i = 0; i < myBrowsers.Count; i  )
{
  myBrowser[i]...
}
  

Ответ №4:

Недавно я работал с той же проблемой, что и вы: множество элементов управления и для того, чтобы найти их все, я решил использовать список элементов управления (или просто использовать элементы управления свойствами в форме, если у вас элементы управления упорядочены правильно), а затем я перебирал его, устанавливая их местоположение, вычисляя каждую позицию каждый раз.

Увидимся.

Комментарии:

1. Я не уверен, знаете ли вы уже, но вам не нужно вычислять их позиции, если вы используете массив Bounds на экранах. Фреймворк уже точно знает, где он рассчитывается для начала и завершения, ширины и высоты. Мое приложение предназначено только для использования на терминале в interchages.

2. Ну, это было то, что я хотел сказать с calculate, используя границы элементов управления, мы разработали пользовательские элементы управления списком, где у вас была постоянная высота и (0,0) в качестве начальной позиции, поэтому на каждой итерации вы работали с положением заднего элемента списка и добавляли высоту. Я надеюсь, что смог заставить меня понять 🙂