首页 文章

如何将列表绑定到组合框? (的Winforms)

提问于
浏览
90

我想将绑定源连接到类对象列表,然后将对象值连接到组合框,任何人都可以建议如何操作它

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

        public Country()
        {
            Cities = new List<City>();
        }
    }

是我的类,我想将其名称字段绑定到绑定源,然后可以与组合框关联

6 回答

  • 19

    尝试这样的事情:

    yourControl.DataSource = countryInstance.Cities;
    

    如果您使用的是WebForms,则需要添加以下行:

    yourControl.DataBind();
    
  • 0

    当你指的是一个组合框时,我想要使用双向数据绑定(如果有的话,请查看使用 BindingList

    public class Country
    {
        public string Name { get; set; }
        public IList<City> Cities { get; set; }
        public Country(string _name)
        {
            Cities = new List<City>();
            Name = _name;
        }
    }
    
    List<Country> countries = new List<Country> { new Country("UK"), 
                                         new Country("Australia"), 
                                         new Country("France") };
    
    bindingSource1.DataSource = countries;
    
    comboBox1.DataSource = bindingSource1.DataSource;
    
    comboBox1.DisplayMember = "Name";
    comboBox1.ValueMember = "Name";
    
  • 21
    public MainWindow(){
        List<person> personList = new List<person>();
    
        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");
    }
    

    繁荣 .

  • 0

    如果您使用的是ToolStripComboBox,则不会公开DataSource(.NET 4.0):

    List<string> someList = new List<string>();
    someList.Add("value");
    someList.Add("value");
    someList.Add("value");
    
    toolStripComboBox1.Items.AddRange(someList.ToArray());
    
  • -2

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

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

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

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

    // not tested, schematic:
    List<Country> countries = ...;
    ...; // fill 
    
    comboBox1.DataSource = countries;
    comboBox1.DisplayMember="Name";
    comboBox1.ValueMember="Cities";
    

    然后在SelectionChanged中,

    if (comboBox1.Selecteditem != null)
    {
       comboBox2.DataSource=comboBox1.SelectedValue;
    
    }
    
  • 136
    public class Country
        {
            public string Name { get; set; }
            public IList<City> Cities { get; set; }
    
            public Country()
            {
                Cities = new List<City>();
            }
        }
    
        public class City { public string Name { get; set; } }
    
    List<Country> Countries = new List<Country>
            {
                new Country
                {
                    Name = "Germany",
                    Cities =
                    {
                        new City {Name = "Berlin"},
                        new City {Name = "Hamburg"}
                    }
                },
                new Country
                {
                    Name = "England",
                    Cities =
                    {
                        new City {Name = "London"},
                        new City {Name = "Birmingham"}
                    }
                }
            };
    
            bindingSource1.DataSource = Countries;
            member_CountryComboBox.DataSource = bindingSource1.DataSource;
            member_CountryComboBox.DisplayMember = "Name";
            member_CountryComboBox.ValueMember = "Name";
    

    这是我现在使用的代码

相关问题