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

3

有没有人能给一个在c#.net中将列表数组的值绑定到列表框的简短例子?

1个回答

13

这取决于您的列表数组是如何构建的。

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

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

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

alt text

否则,如果你的列表项更加复杂(例如自定义类),你可以按照以下方式操作:

例如,假设已经定义了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 项的显示文本。

alt text


有没有一种方法可以绑定,但仍然读取整个类实例?比如说,我想检索被选择的实际文本,而不是 Id(同时保持 Id 作为值成员),我能做到吗? - AdamMc331
@McAdam331:是的,只需不将任何内容设置为“ValueMember”。这样,listBox1.SelectedValue属性将是MyClass类型。 - digEmAll
太棒了!我希望你还在使用你的账户,我真的可以将这个应用到我正在进行的项目中。 - AdamMc331

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接