最近希望实现个功能,找不到好的办法
  问题是:
    winform中form1上一个按钮点击后,弹出form2窗口,在form2窗口上将数据库的一个表单的前两列显示出来,前面附有复选框,如图
数据库内容
form2图
点击form2上按钮,将选中的数据生成新的数据库表或是赋予一个参数
请教各路高手如何实现或同工异曲的途径,谢谢!

解决方案 »

  1.   

    后台读取数据库,动态加载checkbox?然后将选中的checkbox的数据保存到一张新的表?是这个过程么?
      

  2.   

    或者用一个CheckBoxList,设置数据源,每个CheckBox的Text赋值为“学号”+“  ”+“姓名”
      

  3.   

    假设你已经从access读出一个DataTable。
    private static DataTable GetData()
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("学号", typeof(Int32));
                dt.Columns.Add("姓名", typeof(string));
                dt.Columns.Add("年龄", typeof(Int32));            DataRow dr = null;
                dr = dt.NewRow();
                dr["学号"] = 1;
                dr["姓名"] = "张三峰";
                dr["年龄"] = 13;
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["学号"] = 2;
                dr["姓名"] = "无常";
                dr["年龄"] = 12;
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["学号"] = 3;
                dr["姓名"] = "李四";
                dr["年龄"] = 13;
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["学号"] = 4;
                dr["姓名"] = "王五";
                dr["年龄"] = 11;
                dt.Rows.Add(dr);            return dt;
            }
    在form_load事件中动态添加checkbox
     private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = GetData();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    CheckBox cb = new CheckBox();
                    cb.Name = "checkbox" + i;
                    cb.Location = new Point(10, 20 * i);
                    cb.Text = dt.Rows[i]["姓名"].ToString();
                    this.Controls.Add(cb);
                }
            }
    在另外一个按钮中就可以得到选中的checkbox的name和text。
     private void button1_Click(object sender, EventArgs e)
            {
                foreach (Control ctl in this.Controls)
                {
                    if (ctl is CheckBox)
                    {
                        CheckBox cb = ctl as CheckBox;
                        if (cb.Checked)
                        {
                            MessageBox.Show("Name:" + cb.Name + "\tText:" + cb.Text);
                        }
                    }
                }
            }