Вчера в голову пришла интересная мысль. Допустим, у нас есть класс someObject
:
class someObject
{
public int id;
public string name;
}
И также допустим, что у нас есть comboBox
, который нам нужно заполнить этими самыми someObject
, которые лежат в каком-то листе, т.е. сделать так:
foreach (var item in list)
{
comboBox.Items.Add(item);
}
Если сделать это так, то в comboBox
будет что-то подобное на каждый элемент:
Form+someObject
Хорошо, пойдём другой дорогой. Будем заполнять вот так:
foreach (var item in list)
{
comboBox.Items.Add(item.name);
}
Теперь в comboBox
'е будет отображаться имя элемента name
. Теперь после выбора какого-либо элемента из comboBox
для получения конкретного элемента листа, нужно будет делать вот так:
someObject currentItem;
foreach (var item in list)
{
if(item.name == comboBox.Text)
{
currentItem = item;
}
}
Хорошо. Всё это работает. Но есть одно "но": если в листе есть объекты с одинаковыми именами, то после тех же манипуляций, которые описаны выше, мы не всегда будем получать именно тот объект, который нам нужен. Я хочу сказать, что цикл foreach
пройдётся по всему листу, сверит имя каждого элемента с comboBox.Text
и будет сохранять в переменную последнее проверенное значение.
А если сделать вот так:
someObject currentItem;
foreach (var item in list)
{
if(item.name == comboBox.Text)
{
currentItem = item;
break;
}
}
то будет сохраняться только первое значение.
Так вот, к чему я всё это: Есть ли какие-нибудь варианты, чтобы при добавлении элемента вот так
foreach (var item in list)
{
comboBox.Items.Add(item);
}
в comboBox
отображалось только имя?
Просто задайте свойство
comboBox.DisplayMember = "name";
Можно использовать конструкцию
comboBox.DisplayMember = nameof(someObject.name);
Однако, при этом нужно заменить поля на свойства:
class someObject
{
public int id { get; set; }
public string name { get; set; }
}
А также желательно использовать PascalCase для публичных свойств: Id
, Name
и имён класса: SomeObject
.
Примечание: также обратите внимание на свойство ValueMember
комбобокса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста сервисы для онлайн рефакторинга кода на c# и да вообще такие есть??
Браузеры не видят идентификатор у блока #servimgdisp и не выводят картинку, хотя у рядом стоящих, идентичных, блоков видят и выдаютПробовал менять...
Вечер добрый! Кто может помочь с задачкой, хочу сделать анимированное табло c обратным отсчетом по клику, на jQuery, но плюс к этому анимацию переворачивающихся...
Как задать отступ сверху (аналог CSS - margin-top), чтобы изображение смещалось от верха к центру?