如何禁用ComboBox中与所选项具有相同文本的第1项的选择?

时间:2014-11-09 17:22:08

标签: c# winforms combobox

我试图为我的问题找到解决办法并且没有成功, 所以我非常感谢任何帮助。

我正在使用ComboBox填充项目(Persons)。

设置ComboBox.DataSource:

List<Person> lis_persons = new List<Person> {
    new Person {
        ID = 1,
        Name = "Same",
        Surname = "Text",
        Address = "1'st Address"
    }, 
    new Person {
        ID = 2,
        Name = "Different",
        Surname = "Text",
        Address = "2'nd Address"
    }, 
    new Person {
        ID = 3,
        Name = "Same",
        Surname = "Text",
        Address = "3'rd Address"
    }
};

var lis_comboItems = lis_persons.Select(p => new {
    ID = p.ID,
    Person = String.Format(@"{0} {1}", p.Name, p.Surname),
    Address = p.Address
}).ToList();

CobPersons.DataSource = lis_comboItems;

人员类:

class Person {
    public int ID { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Address { get; set; }
}

(编辑)我已设置:

CobPersons.DisplayMember = "Person";
CobPersons.ValueMember = "ID";
CobPerson.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
CobPerson.AutoCompleteSource = AutoCompleteSource.ListItems;

正如您所看到的,两个不同的人可能有相同的姓名和姓氏。

ComboBox在用户滚动/选择时应该表现得像ComboBox SelectedValueChangedSelectedValue被触发,SelectedValue具有预期值)。< / p>

当用户更改/离开焦点时,事件将按原样触发并且SelectedValue具有预期值, 但是在第一个具有相同人(文本)值的人被选中之后(无理由/单独),ID被更改为该人的ComboBox

如何禁用该行为? 在{{1}}失去焦点后,还有其他方法可以“强制选择所选项目”吗?

0 个答案:

没有答案