从数据表值动态创建复选框

时间:2016-03-09 11:58:06

标签: c#

我正在制作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个。另外,如何在运行时注册哪些框进行检查?

1 个答案:

答案 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...
        };