Хотел написать комбобокс, который по умолчанию содержит в элементах время, получилось следующее:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace Project { class HourComboBox : ComboBox { private const int HOURS = 24; public HourComboBox() { IntegralHeight = false; for (int i = 0; i < HOURS; i++) { Items.Add(i); } Console.WriteLine("Size = {0}", Items.Count); } } }
В результате после компиляции добавляется новый компонент в панеле инструментов, но после добавления на форму значения в нём дублируются, т.е. в этом комбобоксе выводит:
0
1
2
...
23
0
1
2
...
23
Скриншот: http://pic.ipicture..../2VeW2UnvZ5.jpg
Причём в файле дизайнера формы сгенерировался один цикл:
this.hourComboBox1 .Items.AddRange(new object[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23});
Использую Visual Studio 2008, делаю следующее:
1) Создаю Windows Form приложение
2) Создаю новый класс и добавляю в него тот код, который я привёл выше
3) Компилю, открывается пустая форма, после чего в панеле инструментов появляется этот новый элемент
4) Добавляю его на форму и снова запускаю приложение
Причём после этого беру и в свойствах этого элемента добавляю вручную в поле Items какие-нибудь значения, теперь уже выводит этот цикл 1 раз:
0
1
2
...
23
+ дальше те, что ввёл вручную
После этого если удалить те, что ввёл вручную и запустить заново, то повторов не будет.
Однако если добавить на форму второй элемент этого класса, то история повторяется - в первом всё нормально, а в новом опять 2 раза...
Кто-нибудь в состоянии объяснить почему выводит 2 раза данные и как это исправить ?
Спасибо!