Я пытаюсь заполнить панель макета потока ComboBoxes и NumbericUpDown. Проблема, с которой я столкнулся, заключается в использовании как новых NumbericUpDown, так и новых ComboBox. Вот как я создаю ComboBoxes и NumericUpDown.
// This int increments each time the code is run. It's located outside of the method below.
int captchaID = 0;
.
// Textboxes that are only for the UI, no code interaction based on text input.
string textboxText = "captchaTextbox";
TextBox newTextbox = new TextBox();
newTextbox.Name = captchaID.ToString() + textboxText;
newTextbox.Text = "";
newTextbox.Width = 175;
itemFlowPanel.Controls.Add(newTextbox);
// Combo Boxes
string comboBoxText = "captchaComboBox";
ComboBox newComboBox = new ComboBox();
newComboBox.Name = captchaID.ToString() + comboBoxText;
newComboBox.Width = 50;
newComboBox.DropDownStyle = ComboBoxStyle.DropDownList;
itemFlowPanel.Controls.Add(newComboBox);
// This array holds my strings that are added to each ComboBox
string[] skills = new string[6];
skills[0] = "STR";
skills[1] = "DEX";
skills[2] = "CON";
skills[3] = "INT";
skills[4] = "WIS";
skills[5] = "CHA";
// This for loop is just populating my ComboBox with the array.
for (int i = 0; i < skills.Length; i++)
{
newComboBox.Items.Add(skills[i]);
}
// Numeric Up Downs
string numericUpDownText = "captchaNumericUpDown";
NumericUpDown newNumericUpDown = new NumericUpDown();
newNumericUpDown.Name = captchaID.ToString() + numericUpDownText;
newNumericUpDown.Width = 50;
newNumericUpDown.ValueChanged += new EventHandler(captchaNumericUpDown_Click);
newNumericUpDown.ValueChanged += new EventHandler(captchaNumericUpDown_ValueChanged);
itemFlowPanel.Controls.Add(newNumericUpDown);
captchaID++;
С текущим кодом я могу редактировать EventHandler, который содержится в каждом NumericUpDown, но я не нашел способа заставить его читать соответствующее поле со списком (которое увеличивается вместе с captchaID).
Что я хотел бы сделать, так это создать новое уникальное событие для каждого, но если это невозможно, также может помочь способ проверки идентификатора поля со списком.
Tag
элемента управленияComboBox
илиNumericUpDown
для хранения экземпляра элемента управления connected, таким образом, если вы можете извлечь из элемента управления, связанного с тегом, и проверить его значение. Другой вариант - сохранить добавленные элементы управления в коллекции (Dictionary
?) И получить связанный элемент управления с помощью поиска по ключу. - person Sinatr   schedule 24.06.2015var numericUpDown = (NumericUpDown)sender;
, то после этого:var comboBox = (ComboBox)numericUpDown.Tag;
- person Sinatr   schedule 24.06.2015