我试图为我的问题找到解决办法并且没有成功, 所以我非常感谢任何帮助。
我正在使用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
SelectedValueChanged
(SelectedValue
被触发,SelectedValue
具有预期值)。< / p>
当用户更改/离开焦点时,事件将按原样触发并且SelectedValue
具有预期值,
但是在第一个具有相同人(文本)值的人被选中之后(无理由/单独),ID
被更改为该人的ComboBox
。
如何禁用该行为? 在{{1}}失去焦点后,还有其他方法可以“强制选择所选项目”吗?