当前位置:  开发笔记 > 编程语言 > 正文

如何将List绑定到ComboBox?

如何解决《如何将List绑定到ComboBox?》经验,为你挑选了3个好方法。

我想连接一个BindingSource类对象列表,然后将对象值连接到一个ComboBox.
谁能建议怎么做?

public class Country
{
    public string Name { get; set; }
    public IList Cities { get; set; }

    public Country()
    {
        Cities = new List();
    }
}

是我的类,我想将其name字段绑定到BindingSource,然后可以与ComboBox关联



1> Mitch Wheat..:

正如你所说的一个组合框,我假设你不想使用双向数据绑定(如果有的话,请看一下使用BindingList)

public class Country
{
    public string Name { get; set; }
    public IList Cities { get; set; }
    public Country(string _name)
    {
        Cities = new List();
        Name = _name;
    }
}



List countries = new List { new Country("UK"), 
                                     new Country("Australia"), 
                                     new Country("France") };

var bindingSource1 = new BindingSource();
bindingSource1.DataSource = countries;

comboBox1.DataSource = bindingSource1.DataSource;

comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Name";


你能解释或添加`bindingSource1`的声明吗?

2> Henk Holterm..:

对于背景,有两种方法可以使用ComboBox/ListBox

1)将Country对象添加到Items属性并将Country作为Selecteditem检索.要使用它,您应该覆盖Country的ToString.

2)使用DataBinding,将DataSource设置为IList(List <>)并使用DisplayMember,ValueMember和SelectedValue

对于2),您首先需要一个国家列表

// not tested, schematic:
List countries = ...;
...; // fill 

comboBox1.DataSource = countries;
comboBox1.DisplayMember="Name";
comboBox1.ValueMember="Cities";

然后在SelectionChanged中,

if (comboBox1.Selecteditem != null)
{
   comboBox2.DataSource=comboBox1.SelectedValue;

}


感谢但是这里有点问题在运行应用程序时,名称在组合框中不可见

3> 小智..:
public MainWindow(){
    List personList = new List();

    personList.Add(new person { name = "rob", age = 32 } );
    personList.Add(new person { name = "annie", age = 24 } );
    personList.Add(new person { name = "paul", age = 19 } );

    comboBox1.DataSource = personList;
    comboBox1.DisplayMember = "name";

    comboBox1.SelectionChanged += new SelectionChangedEventHandler(comboBox1_SelectionChanged);
}


void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    person selectedPerson = comboBox1.SelectedItem as person;
    messageBox.Show(selectedPerson.name, "caption goes here");
}

繁荣.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有