我正在制作DTO创作者。我能够获取表名并将它们放入数据表中。问题是,我必须使用这些表名动态创建复选框,然后才能获得检查的任何项目。这是我迄今为止能够提出的:
for (int i = 0; i < dtable.Rows.Count; i++)
{
string cbName = dtable.Rows[i][0].ToString();
//Console.WriteLine(dtable.Rows[i][0]);
CheckBox box = new CheckBox();
box.Tag = i.ToString();
box.Text = cbName;
box.AutoSize = true;
box.Location = new Point(10, i * 50); //vertical
//box.Location = new Point(i * 50, 10); //horizontal
this.Controls.Add(box);
}
dtable
已经有了名字,我创建了复选框。然而,它们不在表格的渲染区域,最多可以看到10个。另外,如何在运行时注册哪些框进行检查?
答案 0 :(得分:1)
您可以将CheckBoxes放入List中,然后对已检查的CheckBox进行计数。
List<CheckBox> lstBoxes = new List<CheckBox>();
// create box
...
lstBoxes.Add(box);
// Checking for checked boxes (eg. on form exit)
var checkedBoxes = lstBoxes.Where(b => b.Checked);
或者,当您创建复选框时,请在已更改的选项上添加一个事件:
box.CheckedChanged += (sender, e) =>
{
var senderAsBox = sender as CheckBox;
if (senderAsBox == null) return;
var state = senderAsBox.Checked;
// Do you stuff then...
};