C# 如何获取listbox选定项的值

C# 如何获取listbox选定项的值,c#,listbox,C#,Listbox,我正在使用C.NET4.0 我试图获取列表框中单个选定项的值 这是我填充控件的方式: this.files_lb.DataSource = DataTable object 在我的设计器中,我将file\u name指定为DisplayMember,将file\u id指定为DisplayValue 在列表框中选择一个项目后,我尝试了以下方法来获取值: this.files_lb.SelectedValue.ToString() 但它只返回System.Data.DataRowView 在此

我正在使用C.NET4.0

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

这是我填充控件的方式:

this.files_lb.DataSource = DataTable object
在我的设计器中,我将file\u name指定为DisplayMember,将file\u id指定为DisplayValue

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

this.files_lb.SelectedValue.ToString()
但它只返回System.Data.DataRowView

在此链接:

有人建议-

String SelectedItem = listBox1.SelectedItem.Value
但是,当我尝试此操作时,“值”不是一个选项


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

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

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

编辑 您的问题可能是由于未在控件上设置属性:

this.files_lb.DataSource = DataTable object
选择ListBox控件 单击小箭头以显示绑定/项目选项 选择“使用数据绑定项” 如果取消选择该框,我将得到与您描述的完全相同的行为。

var text=listBox1.SelectedItem as DataRowView[columnName].ToString

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

如果没有选定项,也要注意空值


您可能需要设置列表框的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();

谢谢但我相信你错过了问题的一个重要部分。我需要ValueMember值,而不是tex。对我来说,它只返回您在列表框中看到的文本,而不是ValueMember指定的值。如果您在设计器中选择列表框,然后使用小箭头查看项目,是否选中了“使用数据绑定项目”复选框?@LeeLoftiss OK,我想我看到了您从那时得到的问题;更新。小心!!如果在设置display/ValueMember之前设置了数据源。您可能会得到错误的值。cuz listbox.selectedIndexChanged触发器在设置数据源后立即触发。