2013-05-11 4 views
0

У меня есть список Person объектов (который загружен из базы данных), я называю это PersonList. Person класс имеет четыре атрибута Person_Id(PK), Name, Family и Address.Связывание списка с comboBox

Я хочу связать контекст этого списка с ComboBox. Также я хочу показать как Name, так и Family каждого человека в ComboBox (не Person_Id или Address). С другой стороны, я хочу получить Person_Id (PK) выбранного значения ComboBox, если конечный пользователь выбирает кого-либо.

Как я могу это сделать? Также мне интересно, удаляю ли какие-либо элементы PersonList обновления ComboBox автоматически или я должен вручную обновить вручную?

ответ

0

Добавить в класс Person только для чтения свойства, которое возвращает строку нужного

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_id из класса Person.

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

Теперь в выпадающем списке SelectedIndexChange случае вы можете получить идентификатор из SelectedItemValue

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

спасибо за ответ, но все еще остается один нерешенный вопрос? Если я положу кнопку в форме, которая, щелкнув, сделайте эту работу: PersonList.RemoveAt (0); Я не хочу видеть первый элемент comboBox тоже без каких-либо дополнительных программ. Является ли это возможным? – user2373198

Смежные вопросы