Многие стандартные контролы в WinForms при отображении списков элементов объектов (контролы типа ComboBox), используют возвращаемое этими объектами значение метода ToString(). Вообще, использование метода ToString() в этих целях является стандартным подходом и используется также в других библиотеках WinForms, например в DevExpress контролах.
Интересно, сколько различных способов существует для придания спискам объектов нужного представления. Кто-то наследуется от класса, который нужно отобразить, и переопределяет его метод ToString(). Иногда, что на мой вгляд хуже всего, пытаются в классах модели определить их представление и уже в них самих переопределяют ToString(). Кто-то использует словари (Dictionary) для сопоставления отображаемого текста с объектами. Можно использовать Binding.
Есть еще парочка известных мне методов, но я предпочитаю варант предсталенный ниже. Это некоторая общая обертка (Generic Wrapper), которая содержит всего два свойства: объект и его желаемое отображаемое значение:
class DisplayItem {
public DisplayItem(T value, String dispText) {
Value = value;
DisplayText = dispText;
}
public T Value { get; set; }
public String DisplayText { get; set; }
public override string ToString() {
return DisplayText ;
}
}
Интересно, сколько различных способов существует для придания спискам объектов нужного представления. Кто-то наследуется от класса, который нужно отобразить, и переопределяет его метод ToString(). Иногда, что на мой вгляд хуже всего, пытаются в классах модели определить их представление и уже в них самих переопределяют ToString(). Кто-то использует словари (Dictionary) для сопоставления отображаемого текста с объектами. Можно использовать Binding.
Есть еще парочка известных мне методов, но я предпочитаю варант предсталенный ниже. Это некоторая общая обертка (Generic Wrapper), которая содержит всего два свойства: объект и его желаемое отображаемое значение:
class DisplayItem
public DisplayItem(T value, String dispText) {
Value = value;
DisplayText = dispText;
}
public T Value { get; set; }
public String DisplayText { get; set; }
public override string ToString() {
return DisplayText ;
}
}