如何获取列表框选定的项目值

我正在使用C#.NET 4.0

我试图获取列表框中单个选定项的值。

这是我填充控件的方式:

this.files_lb.DataSource = DataTable object 

在我的设计器中,我已将file_name指定为DisplayMember,将file_id指定为DisplayValue

在列表框中选择一个项目后,我尝试了以下内容来获取值:

 this.files_lb.SelectedValue.ToString() 

但它返回的只是"System.Data.DataRowView".

在此链接:将列表框中所选项的值作为字符串

有人建议 –

 String SelectedItem = listBox1.SelectedItem.Value 

但是,当我尝试这个时,“价值”不是一个选项。

如何从列表框中的单个选定项获取ValueMember值?

var text = (listBox1.SelectedItem as DataRowView)["columnName"].ToString();

columnName替换为要从中获取数据的列的名称,该列将与数据源中的列对应。

如果没有选定项目,请注意空值。

真的应该这么容易; 我在按钮的点击事件中有以下内容,以确保我没有在我脑海中简化它:

 private void button1_Click(object sender, EventArgs e) { string selected = listBox1.GetItemText(listBox1.SelectedValue); MessageBox.Show(selected); } 

结果如下:

在此处输入图像描述


编辑

看起来你的问题可能是没有在控件上设置属性:

在此处输入图像描述

  1. 选择ListBox控件
  2. 单击小箭头以显示绑定/项目选项
  3. 选择“ 使用数据绑定项”

如果我取消选择该框,我会得到与您描述的完全相同的行为。

在此处输入图像描述

 var selectedValue = listBoxTopics.SelectedItem; if (selectedValue != null) { MessageBox.Show(listBoxTopics.SelectedValue.ToString()); } 

您可能需要设置列表框的DataValueField。

 NewEmployeesLB.DataSource = newEmployeesPersons.DataList.Select(np => new ListItem() { Text = np.LastName + ", " + np.FirstName, Value = np.PersonID.ToString() }).ToList(); NewEmployeesLB.DataTextField = "Text"; NewEmployeesLB.DataValueField = "Value"; NewEmployeesLB.DataBind();