Это в Windows Forms, .NET 4.0.
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public string Lastname { get; set; }
public override string ToString()
{
return String.Format("{0} {1}", Name, Lastname);
}
}
Я прочитал на странице MSDN , что если для элемента управления comboBox не установлено значение .DisplayMember, он использует ToString объекта по умолчанию, поэтому я переопределяю метод toString. 1006 *
Результат, как и ожидалось:
![enter image description here](https://i.stack.imgur.com/8usjO.jpg)
Вот как я загружаю данные:
private void button2_Click(object sender, EventArgs e)
{
var people = LoadSamplePeople();
comboBox1.DataSource = people;
}
private IEnumerable<Person> LoadSamplePeople()
{
return new List<Person>()
{
new Person(){ Id = 1, Name = "Sergio", Lastname = "Tapia" },
new Person(){ Id = 2, Name = "Daniel", Lastname = "Tapia" }
};
}
Проблема возникает, когда я устанавливаю .ValueMember элемента управления, кажется, что дисплей по умолчанию использует это значение .
private void button2_Click(object sender, EventArgs e)
{
var people = LoadSamplePeople();
comboBox1.ValueMember = "Id";
comboBox1.DataSource = people;
}
private IEnumerable<Person> LoadSamplePeople()
{
return new List<Person>()
{
new Person(){ Id = 1, Name = "Sergio", Lastname = "Tapia" },
new Person(){ Id = 2, Name = "Daniel", Lastname = "Tapia" }
};
}
![enter image description here](https://i.stack.imgur.com/OS86T.jpg)
Как бы я установить valueMember, но по умолчанию DisplayMember для метода ToString?
Обратите внимание, что отображение является комбинацией двух свойств класса Person. :)