我正在建立一個WinForm與不少動態元素,我想我在嵌套控件中的父/子關係有一些麻煩。 我能找到的所有現有問題似乎都獨立於WebForms,這並不完全有用。嵌套的動態控件,使用自定義事件處理程序
我也遇到過一些定製控件的麻煩,但這可能是一個相關的問題。
我正在嘗試顯示一些PictureBoxes,每個PictureBox都有一些關聯的NUD。我最初是通過手工製作大量控件來做到這一點的,但現在我希望自動化該過程並在別處重新使用代碼。
實際的代碼比這更復雜一點,但這裏的重要位僞和實際代碼
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事件沒有被觸發。完全一樣。 我在運行之前添加了事件處理程序,此時控件不是動態的,從來沒有遇到過這麼多麻煩。我很確定我甚至用嵌套控件做了這個。
最後,我考慮將最後一個子面板放入自己的自定義控件中,但也有類似的問題。大概找到解決這個問題的方法也可以解決這個問題,但是如果你知道這個問題不會解決的話,請你指點一下正確的方向嗎?
謝謝, :)