Я создаю WinForm с несколькими динамическими элементами, и я думаю, что у меня есть некоторые проблемы с отношениями родитель / потомок во вложенных элементах управления.Все существующие вопросы, которые я мог найти, казались эксклюзивными для WebForms, что было не совсем полезно.
У меня также были некоторые проблемы с пользовательскими элементами управления, но это может быть связанная проблема.
Я пытаюсь отобразить несколько PictureBox, каждый из которых имеет несколько связанных NUD.Первоначально я делал это, делая множество элементов управления вручную, но теперь я хочу автоматизировать процесс и повторно использовать код в другом месте.
Фактический код немного сложнее, чем этот, но вот важные моментыв смеси PseudoCode и фактического кода
panel_book.Controls.Clear();
for (loop controls)
{
//INITIALIZE CHILD CONTROLS
PictureBox tempBox = new PictureBox();
NumericUpDown t1 = new NumericUpDown();
NumericUpDown t2 = new NumericUpDown();
NumericUpDown t3 = new NumericUpDown();
NumericUpDown t4 = new NumericUpDown();
tempBox.Image = getImage();
tempBox.Size = tempBox.Image.Size;
tempBox.Tag = getValue();
//THIS IS WHAT IS GIVING ME TROUBLE
//=======================================================
tempBox.MouseEnter += new EventHandler(Binder_MouseEnter);
tempBox.Click += new EventHandler(smallCardNew_Click);
//THINGS I'VE TRIED
tempBox.BringToFront();
tempBox.Focus();
t1.Size = new Size();
t2.Size = t1.Size; t3.Size = t1.Size; t4.Size = t1.Size;
t1.Location = new Point();
t2.Location = new Point(); t3.Location = new Point(); t4.Location = new Point();
t1.Value = 0;
t2.Value = 0; t3.Value = 0; t4.Value = 0;
t1.Enabled = true; t2.Enabled = true;
t3.Visible = false; t4.Visible = false;
//CREATE THE NEW PARENT CONTROL (PANEL)
Panel tempPanel = new Panel();
tempPanel.Margin = new Padding(0, 0, 0, 0);
tempPanel.Controls.Add(tempBox);
tempPanel.Controls.Add(t1);
tempPanel.Controls.Add(t2);
tempPanel.Controls.Add(t3);
tempPanel.Controls.Add(t4);
tempPanel.Size = new Size();
tempPanel.Location = new Point();
panel_book.Controls.Add(tempPanel);
}//end loop
///
void smallCardNew_Click(object sender, EventArgs e)
{
MessageBox.Show("Click Event Triggered");
}
void Binder_MouseEnter(object sender, EventArgs e)
{
MessageBox.Show("Mouse Enter Event Triggered");
}
Надеюсь, это было понятно, на случай, если это важно, вот еще немного фона.
У меня есть очень большая FlowLayoutPanel, которая содержит некоторые дочерние панели,Одна из этих дочерних панелей - это область, над которой я сейчас работаю.(называемый panel_book выше) что панель - это то, к чему я динамически добавляю дочерние панели с PictureBox и друзьями.
Досадно, что события MouseEnter и Click не запускаются,Совсем.Я добавил обработчики событий во время выполнения раньше, когда control не был динамическим и никогда не имел таких проблем.Я почти уверен, что я делал это и с вложенными элементами управления.
Наконец, я подумал о том, чтобы превратить эту последнюю дочернюю панель в собственный пользовательский элемент управления, но у меня были похожие проблемы.Предположительно, поиск решения этой проблемы также исправит это, но если вы знаете, что это не так, не могли бы вы указать мне правильное направление?
Спасибо,:)