【问题标题】:How do I get the selected Value from dynamically created CheckBox?如何从动态创建的 CheckBox 中获取选定的值?
【发布时间】:2021-10-27 00:55:12
【问题描述】:

我将 CheckBox 控件从数据库动态添加到 FlowLayOutPanel。如何获取和存储所有选定的值?

我的示例代码在这里...

private void dynamicCheck()
{
    //throw new NotImplementedException();
    DataSet1TableAdapters.tbl_subjects1TableAdapter ta = 
        new DataSet1TableAdapters.tbl_subjects1TableAdapter();
    DataTable dt = ta.GetData();
    foreach (DataRow row in dt.Rows)
    {
        CheckBox chk = new CheckBox();
        chk.Width = 90;
        chk.Text = row[1].ToString();
        chk.CheckedChanged += new 
                          EventHandler(changeCheck);
        flowLayoutPanel1.Controls.Add(chk);            
    }
}   

private void changeCheck(object sender, EventArgs e)
{
    //throw new NotImplementedException();
    CheckBox chk = sender as CheckBox;
    if (chk.Checked)
    {
        //MessageBox.Show("checked item" + chk.Text);        
    }
}

private void buttonSave_Click(object sender, EventArgs e)
{
}

【问题讨论】:

标签: c# sql-server winforms checkbox foreach


【解决方案1】:

我会这样做:

private List<CheckBox> _checkBoxes = null;

private void DynamicCheck()
{
    DataSet1TableAdapters.tbl_subjects1TableAdapter ta =
        new DataSet1TableAdapters.tbl_subjects1TableAdapter();
    DataTable dt = ta.GetData();
    
    _checkBoxes = dt.Rows.Cast<DataRow>().Select(row =>
    {
        CheckBox chk = new CheckBox();
        chk.Width = 90;
        chk.Text = row[1].ToString();
        chk.CheckedChanged += new EventHandler(changeCheck);
        flowLayoutPanel1.Controls.Add(chk);
        return chk;
    }).ToList();
}

现在您可以访问_checkBoxes 中的每个CheckBox

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2021-07-04
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多