winform中关于listbox设置多选后的取值this.listBox1.DisplayMember="SymptomName";
this.listBox1.ValueMember="SymptomID";//this.listBox1.DisplayMember="SymptomID"; //这个可以确定SymptomID确实有值 显示正常
//this.listBox1.ValueMember="SymptomID";然后我用
if (this.listBox1.ValueMember!="")
{ for(int i=0;i<this.listBox1.SelectedItems.Count;i++)
  {
    string a +=this.listBox1.SelectedValue.ToString(); 
    string b +=this.listBox1.GetItemText(this.listBox1.SelectedItems[i]);
    string c +=this.listBox1.SelectedItems[i].tostring()
  }
}
a 得到的是同一条即点击的那条
b 得到的是所有选中的纪录的显示值 即SymptomName
c 得到的根离谱 全是"System.Data.DataRowView"我想得到的是所有选中纪录的Value值 请问到底该怎么得到呢?

解决方案 »

  1.   

    this.listBox1.SelectedItems[i].Value 不行么?
      

  2.   

    tb为TextBox,lb为ListBox
    tb.Text = "";
    int i=lb.SelectedItems.Count;
    for(int n=0;n<i;n++)
    {
       tb.Text += lb.SelectedItems[n].ToString() + "  ";
    }
      

  3.   

    bladebengbu(清风飘雨) 
    我前面说过了
    lb.SelectedItems[n].ToString();
    取出的结果全是"System.Data.DataRowView"
      

  4.   

    不好意思看错了,ListBox是没有Value值的
      

  5.   

    for(int i=0;i<this.listBox1.SelectedItems.Count;i++)
    {
    MessageBox.Show(this.listBox1.SelectedItems[i].ToString());
    }
      

  6.   

    this.listBox1.SelectedItems[i]返回DataRowView,它有一个成员Row就是你选择的那一行,你可以从里面取任意一列的值。
      

  7.   

    string str = "";
    for (int x = 0; x < listBox1.Items.Count; x++)
    {
    if(listBox1.GetSelected(x) == true)
             {
        str += listBox1.SelectedItems[x].ToString();
             }
    }
    MessageBox.Show(str);
      

  8.   

    属性中this.listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple;for(int i=0;i<listBox1.SelectedItems.Count;i++)
    {
     string a=listBox1.SelectedItems[i].ToString();
     MessageBox.Show(a.ToString());
    }
      

  9.   

    DataTable dt = new DataTable();
    dt = ...
    实现第一种方法
    添加:
    foreach(System.Data.DataRow row in dt.Rows)
    {
       this.listBox1.Items.Add(row["SymptomID"].ToString());
    }
    选择:
    for(int i=0;i<this.listBox1.SelectedItems.Count;i++)
    {
      MessageBox.Show(this.listBox1.SelectedItems[i].ToString());
    }实现第二种方法
    绑定:
    this.listBox1.DataSource = dt;
    this.listBox1.DisplayMember="SymptomName";
    this.listBox1.ValueMember="SymptomID";
    选择:
    for(int i=0;i<this.listBox1.SelectedIndices.Count;i++)
    {
      MessageBox.Show(((DataRowView)(this.listBox1.SelectedItems[i])).Row["SymptomID"].ToString());
    }
      

  10.   

    DataTable dt = new DataTable();
    dt = ...
    实现第一种方法
    添加:
    foreach(System.Data.DataRow row in dt.Rows)
    {
       this.listBox1.Items.Add(row["SymptomID"].ToString());
    }
    选择:
    for(int i=0;i<this.listBox1.SelectedItems.Count;i++)
    {
      MessageBox.Show(this.listBox1.SelectedItems[i].ToString());
    }实现第二种方法
    绑定:
    this.listBox1.DataSource = dt;
    this.listBox1.DisplayMember="SymptomName";
    this.listBox1.ValueMember="SymptomID";
    选择:
    for(int i=0;i<this.listBox1.SelectedIndices.Count;i++)
    {
      MessageBox.Show(((DataRowView)(this.listBox1.SelectedItems[i])).Row["SymptomID"].ToString());
    }
      

  11.   

    JasonHeung(拥有一切也只不过这样笑着哭) (  
    wmt85(深山老翁)正解 谢谢大家