将列表绑定到组合框

时间:2013-05-11 16:48:57

标签: c# winforms object user-interface combobox

我有一个Person对象列表(从数据库加载),我称之为PersonListPerson类有四个属性Person_Id(PK)NameFamilyAddress

我想将此列表的上下文绑定到ComboBox。另外,我想在ComboBox中显示每个人的NameFamily(不是Person_IdAddress)。另一方面,如果最终用户选择任何人,我想获得所选ComboBox值的Person_Id(PK)。

我该如何设法做到这一点?另外我想知道我是否自动删除了PersonList ComboBox更新的任何项目,或者我应该自己手动更新?

1 个答案:

答案 0 :(得分:0)

向Person类添加一个readonly属性,该属性返回所需的字符串

class Person
{
    public int Person_ID {get;set;}
    public string name {get;set;}
    public string family {get;set;}
    public int address {get;set;}
    public string name_family { get {return this.ToString();}}

    public override string ToString()
    {
        return string.Format("{0} {1}", this.name, this.family);
    }
}

现在将组合框的属性DisplayMember分配给只读属性,将ValueMember属性分配给Person类的Person_ID。

comboBox1.DataSource = PersonList;
comboBox1.DisplayMember = "name_family";
comboBox1.ValueMember = "id";

现在在组合框SelectedIndexChange事件中,您可以从SelectedItemValue中检索ID

private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    if(comboBox1.SelectedValue != null)
    {
       int personID = Convert.ToInt32(comboBox1.SelectedValue);
       .......
    }
}