我試圖根據用戶輸入的數據在面板上動態創建複選框。如果其中任何一項被選中,我想在面板外部檢查一個不同的複選框。看起來是這樣的:將所有動態創建的複選框連接到同一個事件處理程序
[]所有
[] Specific1 [] Specific2 [] Specific3
這是我創建的複選框:
foreach (Camera cam in UserData.globalUserData.cameras)
{
box = new CheckBox();
box.Text = cam.Nickname;
box.AutoSize = true;
box.CheckedChanged += new EventHandler(CheckedChanged);
pnlCamTicky.Controls.Add(box);
}
我的事件:
private void CheckedChanged(object sender, EventArgs e)
{
foreach (Control c in pnlCamTicky.Controls)
{
if (c is CheckBox)
{
if (((CheckBox)c).Checked)
{
chkAllCameras.Checked = false;
}
else
{
chkAllCameras.Checked = true;
}
}
}
}
但是,這隻適用於窗體上動態創建的LAST複選框。我認爲在創建新的複選框時,事件處理程序的接線正在被覆蓋。
如何動態創建複選框,然後將它們全部連接到相同的事件處理程序?
您使用始終相同_chkAllCamers_ checkbutton。您應該在該循環中使用變量_c_ – Steve
循環中的最後一個複選框總是以該邏輯獲勝。 – LarsTech
是的,chkAllCameras不是被循環使用的控件之一。它需要根據是否檢查任何正在循環的控件進行更改。 我覺得它的作品,如果我從事件處理程序中刪除「else」語句,因爲我是一個笨蛋。 所以我需要單獨的邏輯,如果NONE的複選框被選中。 謝謝。 –