//CheckedListBox跟数据库绑定
 private void button1_Click(object sender, EventArgs e)
        {
           string sqlQuery = "SELECT studentID, studentName FROM t_a ";
           DataSet ds = DBUtilty.DBHelp.ReadDataFrom_SQL(sqlQuery);
           //this.dgv1.DataSource = ds.Tables[0];
           checkedListBox1.DataSource = ds.Tables[0];
           checkedListBox1.ValueMember = "studentID";      //对应实际值-学生工号
           checkedListBox1.DisplayMember = "studentName";  //显示值-学生姓名  
        }        //获取选中的内容
        private void button2_Click(object sender, EventArgs e)
        {
            string s = "";
            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (checkedListBox1.GetItemChecked(i))
                {
                    //取出已经选择的学生工号,该行代码有问题...
                    s = s + checkedListBox1.Items[i].ToString();

                    s = s + "\r\n";
                }            
            }            MessageBox.Show(s);
        }

解决方案 »

  1.   

    用下面的代码,有多个选项被选中时,查询结果都是一个值,如何修改啊,很着急...   
       private void button2_Click(object sender, EventArgs e)
            {
                string s = "";
                string s2 = "";
                for (int i = 0; i < checkedListBox1.Items.Count; i++)
                {
                    if (checkedListBox1.GetItemChecked(i))
                    {
                        //取出已经选择的学生工号
                        //s = s + checkedListBox1.Items[i].ToString();
                        s = s + checkedListBox1.SelectedValue.ToString();
                        s = s + "\r\n";
                    }       
                }            MessageBox.Show(s);
            }
      

  2.   

    this.checkedListBox1.SelectedItems
    这个属性不行么?
      

  3.   

      private void button2_Click(object sender, EventArgs e)
            {
                string s = "";
                string s2 = "";
                string s3 = "";
                string s4 = "";            for (int i = 0; i < checkedListBox1.Items.Count; i++)
                {
                    if (checkedListBox1.GetItemChecked(i))
                    {
                        //取出已经选择的学生工号
                        //s返回值90906 90906 90906
                        //选择三条不同的记录,学生工号都显示为第三次选择的值(最后一次选择)
                        s = s + checkedListBox1.SelectedValue.ToString();
                        s = s + "\r\n";                    //s2返回值
                        //System.Data.DataRowView System.Data.DataRowView System.Data.DataRowView
                        s2 = s2 + checkedListBox1.SelectedItem.ToString();
                        s2 = s2 + "\r\n";                    //s3返回值
                        //System.Windows.Forms.ListBox+SelectedObjectCollection
                        //System.Windows.Forms.ListBox+SelectedObjectCollection
                        //System.Windows.Forms.ListBox+SelectedObjectCollection
                        s3 = s3 + checkedListBox1.SelectedItems.ToString();
                        s3 = s3 + "\r\n";                    //s4返回值
                        //System.Data.DataRowView System.Data.DataRowView System.Data.DataRowView
                        s4 = s4 + checkedListBox1.Items[i].ToString();
                        s4 = s4 + "\r\n";
                    }       
                }            MessageBox.Show(s);
            }
      

  4.   

    你换成foreach不就行了?foreach (var item in checkedListBox1.CheckedItems) 
                { 
                    s+="\r\n"+item.tostring();   
                } 我猜你是不是想将选中了其复选框的项的值收集起来,那就用上面的checkeditems吧,selecteditems不准确!
    另外,上面的只要项的复选框不是未被选中的,即不确定的也会出现在里面!如果你明确要必须选中的项可以加一个条件判断:
    if(checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(item))==CheckedState.Checked)s+="\r\n"+item.tostring(); 
      

  5.   

    给每个控件加一个Tag,然后根据Tag取值.