Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Чистый лист
5 / 5 / 1
Регистрация: 20.02.2015
Сообщений: 114
1

ListBox.DisplayMember не то отбражает

24.03.2015, 21:47. Просмотров 1114. Ответов 4
Метки нет (Все метки)

Здравствуйте все! Не знаю как правильно задать вопрос, по этому не могу найти ответ. Так, что покажу на примере
есть класс
C#
1
2
3
4
5
6
7
8
9
10
class Country
{
    public string Name { get; set; }
    public int Square { get; set; }
    public Country(string n, int s)
    {
        Name = n;
        Square = s;
    }
}
Нужно что бы листбокс на форме отображал названия стран - Name, которые находятся в словаре:
C#
1
2
3
4
5
6
7
8
9
10
Dictionary<int, Country> countriesList = new Dictionary<int, Country>();
private void Form1_Load(object sender, EventArgs e)
{
    countriesList.Add(0, new Country("Austalia", 321));
    countriesList.Add(1, new Country("Cameroon", 45));
    countriesList.Add(2, new Country("France", 39));
    listBox1.ValueMember = "Key";
    listBox1.DisplayMember = "Value.Name";
    listBox1.DataSource = new BindingSource(countriesList, Null);
}
Лист бокс отображает только нулевой элемент из словаря - "Austalia". Почему? Что не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2015, 21:47
Ответы с готовыми решениями:

Вывод значения DisplayMember, зная его ValueMember
Возникла проблема. Есть 3 combobox и бд. Все три имеют &quot;общий&quot; ValueMember и...

Как отобразить вcomboBoхе в значении DisplayMember два столбца
Здравствуйте. Подскажите, как отобразить в ComboBoхе в значении DisplayMember...

ListBox как сделать что бы элемент ListBox выполнял действия
на пример элемент ListBox очистил бы texbox

Сравнить два ListBox-а, совпадающие элементы вывести в третий ListBox
Друзья, есть два Listbox, в которых храниться значения = папка и путь( пример...

Самописный класс ListBox: как создать коллекцию, которая будет отображаться в свойствах ListBox?
Создаю класс ListBox, который наследуется от System.Windows.Forms.ListBox...

4
kenny69
burning1ife
1411 / 1233 / 292
Регистрация: 21.09.2008
Сообщений: 3,407
Записей в блоге: 9
24.03.2015, 22:16 2
Цитата Сообщение от Чистый лист Посмотреть сообщение
Лист бокс отображает только нулевой элемент из словаря - "Austalia". Почему? Что не так?
Цитата Сообщение от Чистый лист Посмотреть сообщение
countriesList.Add(0, new Country("Austalia", 321));
А как должно быть?
А понял, в том смысле, что только 1 элемент из коллекции?

Добавлено через 16 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dictionary<int, string> countriesList = new Dictionary<int, string>();
 var countries= new List<Country>()
{
    new Country("Austalia", 321),
    new Country("Cameroon", 45),
    new Country("France", 39)
};
for (int i=0;i<countries.Count;i++)
{
   countriesList.Add(i, countries[i].Name);
}
 
   listBox1.ValueMember = "Key";
    listBox1.DisplayMember = "Value";
listBox1.DataSource = new BindingSource(countriesList, Null)
1
Чистый лист
5 / 5 / 1
Регистрация: 20.02.2015
Сообщений: 114
24.03.2015, 22:30  [ТС] 3
Цитата Сообщение от kenny69 Посмотреть сообщение
А понял, в том смысле, что только 1 элемент из коллекции?
точно! Но если написать просто
C#
1
listBox1.DisplayMember = "Value";
то отображаются все элементы, но не так.

Добавлено через 13 минут
kenny69, думаю это будет работать, но хочется понять почему не работает тот вариант?
0
kenny69
burning1ife
1411 / 1233 / 292
Регистрация: 21.09.2008
Сообщений: 3,407
Записей в блоге: 9
24.03.2015, 23:31 4
Потому что DisplayMember и ValueMember не работают со свойствами дочерних объектов.
В WPF такой трюк проходит
1
Чистый лист
5 / 5 / 1
Регистрация: 20.02.2015
Сообщений: 114
25.03.2015, 12:57  [ТС] 5
Спасибо kenny69, за помощь, только осталось непонятным, для меня, почему DisplayMember не выдает при этом ошибку а просто выдало первый элемент коллекции. Если кто знает буду благодарен за разъяснение. Для себя остановился на таком варианте: добавив в класс Country строку
C#
1
public override string ToString() { return Name; }
переопределил метод ToString() для класса Country, теперь в листбоксе отображается значение поля Name если DisplayMember присвоить просто "Value";
1
25.03.2015, 12:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2015, 12:57

Перенос Items из Listbox 1-ой формы в Listbox 2-ой. Сохранение изменений
Добрый день, изучаю C#, пользуюсь Visual Studio 2015, Windows Forms. ...

Как реализовать по нажатию на выбранный элемент ListBox вывод по нему какой либо информации в другом ListBox
Приветствую... Нужна ваша помощь. Недавно начал разбираться с шарпами. Знание...

Многострочный listbox (или перенос строки в listbox)
Здравствуйте) нужно сделать вот что.. Есть listbox определенного размера и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru