将列表数组中的值绑定到列表框

Posted

技术标签:

【中文标题】将列表数组中的值绑定到列表框【英文标题】:Bind values from a list array to listbox 【发布时间】:2011-05-15 18:09:53 【问题描述】:

任何人都可以给出一个简短的例子来将一个值从列表数组绑定到 c#.net 中的列表框

【问题讨论】:

【参考方案1】:

这取决于你的列表数组是怎样的。

让我们从一个简单的示例开始:

List<string> listToBind = new List<string>  "AA", "BB", "CC" ;
this.listBox1.DataSource = listToBind;

这里我们有一个字符串列表,它将在列表框中显示为项目。

否则,如果您的列表项更复杂(例如自定义类),您可以这样做:

例如,MyClass 定义如下:

public class MyClass

    public int Id  get; set; 
    public string Text  get; set; 
    public MyClass(int id, string text)
    
        this.Id = id;
        this.Text = text;
    

这是绑定部分:

List<MyClass> listToBind = new List<MyClass>  new MyClass(1, "One"), new MyClass(2, "Two") ;
this.listBox1.DisplayMember = "Text";
this.listBox1.ValueMember = "Id"; // optional depending on your needs
this.listBox1.DataSource = listToBind;

您将获得一个仅显示项目文本的列表框。 将ValueMember 设置为类的特定属性将使listBox1.SelectedValue 包含选定的Id 值而不是整个类实例。

注意 取消设置DisplayMember,您将获得列表条目的ToString() 结果作为ListBox 项目的显示文本。

【讨论】:

有没有办法绑定,但仍然读回整个类实例?假设我想检索选择的实际文本,而不是 Id(同时保持 Id 作为值成员),我可以这样做吗? @McAdam331:是的,只是不要将任何内容设置为ValueMember。这样listBox1.SelectedValue 属性将是MyClass 类型。 太棒了!我希望你仍然使用你的帐户,我真的可以将它应用到我正在处理的项目中。

以上是关于将列表数组中的值绑定到列表框的主要内容,如果未能解决你的问题,请参考以下文章

WPF将单个文本框绑定到集合对象或数组中的元素

如何将 DataGrid 中的文本框绑定到 Wpf 中的列表?

将列表列表中的值映射到 Pandas 数据框列

将数据框列中的值附加到列表

listbox的值怎么获取vba

将枚举的键值绑定到下拉列表框