我創建了幾個複選框,當我打開一個表格用下面的代碼創建複選框:訪問動態地在C#
private void OpenFolder_Load(object sender, EventArgs e)
{
int i = 0;
foreach (string file in filesToOpen)
{
Label lbl = new Label();
lbl.Text = Path.GetFileNameWithoutExtension(file);
lbl.Width = 200;
lbl.Height = 25;
lbl.AutoEllipsis = true;
lbl.Location = new System.Drawing.Point(10, 40 + 25 * i);
this.Controls.Add(lbl);
string checkName = "check" + i;
CheckBox check = new CheckBox();
check.Checked = true;
check.AccessibleName = checkName;
check.Location = new System.Drawing.Point(340, 40 + 25 * i);
check.CheckedChanged +=new EventHandler(check_CheckedChanged);
this.Controls.Add(check);
CheckBoxes.Add(check);
i++;
}
,我試圖檢查複選框的狀態,每次一個變化來切換我OK按鈕
這裏是我使用的代碼(用戶可如果有勾選複選框一定數量的唯一驗證),但它沒有,因爲我不能夠靶向複選框:
private void check_CheckedChanged(Object sender, EventArgs e)
{
for (int i = 0; i < filesToOpen.Count(); i++)
{
string tbarName = "tbar" + i;
string checkName = "check" + i;
CheckBox ckb = this.Controls.OfType<CheckBox>()
.Where(c => c.AccessibleName.Equals(checkName)) as CheckBox;
TrackBar tkb = this.Controls.OfType<TrackBar>()
.Where(t => t.AccessibleName.Equals(tbarName)) as TrackBar;
//TrackBar tkb = this.Controls.Find(tbarName, false).First() as TrackBar;
//CheckBox ckb = this.Controls.Find(checkName, false).First() as CheckBox;
if (ckb.Checked == true)
{
//do stuff
}
}
}
我在做什麼錯誤/真的錯了?
它是如何失敗? – ChrisF 2012-07-31 08:12:32
我得到nullreferenceexception,因爲在ckb中沒有任何內容 – 2012-07-31 08:29:40
爲什麼不使用控件的屬性'name'而不是'accessibleName'。如果我不記得這樣做,你可能可以通過'this.Controls [checkName]'' – 2012-07-31 11:28:20