首页 文章

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

提问于
浏览
5

我正在使用C#.NET 4.0

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

这是我填充控件的方式:

this.files_lb.DataSource = DataTable object

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

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

this.files_lb.SelectedValue.ToString()

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

在这个链接:Getting value of selected item in list box as string

有人建议 -

String SelectedItem = listBox1.SelectedItem.Value

但是,当我尝试这个时,“ Value ”不是一个选项 .

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

4 回答

  • 5

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

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

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

  • 1

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

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

    结果如下:

    enter image description here


    编辑

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

    enter image description here

    • 选择ListBox控件

    • 单击小箭头以显示绑定/项目选项

    • 选择 Use Data Bound Items

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

  • 9

    enter image description here

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

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

相关问题