Как привязать словарь в качестве источника данных к ListBox и переопределить стандартную функцию ToString () displayMember для отображения элементов? - PullRequest
1 голос
/ 07 октября 2019

У меня есть словарь marketDictionary = new Dictionary ();где MarketDetail содержит 4 значения / объекты. Я пытаюсь использовать listbox.datasource для отображения одного из элементов в MarketDetail для каждого ключа.

Я могу сделать это нормально, но я хочу отобразить элемент в listbox. Он отображает ключ и имя значения MarketDetail. Я понимаю, что это те пары ключей, которые мне нужны при выборе элемента listbox.

im с использованием:

        listBox1.SelectionMode = SelectionMode.None;
        listBox1.DisplayMember = "key";
        listBox1.ValueMember = "value";
        listBox1.DataSource = new BindingSource(marketDictionary, null);
        listBox1.SelectionMode = SelectionMode.One;

Это прекрасно работает с момента выбора элемента в списке, полученияпара ключей и делаю то что мне нужно. Но есть ли способ отображения моего собственного текста для каждого элемента, добавленного в listbox, или значения.item из словаря. Я надеюсь это имеет смысл. Рассмотрим Роберта

1 Ответ

0 голосов
/ 08 октября 2019

После долгих чтений и испытаний я нашел решение, которое работает для меня. Я не понял, что когда я создавал класс для своих объектов в marketDictionary, я должен был использовать get / set. Поэтому теперь я связываю источник данных с marketDictionary.Values ​​и могу ссылаться на элементы в отображаемом элементе. Так что теперь я могу добавить новый элемент в свой класс объектов, чтобы использовать его для моего элемента отображения. Отлично. Еще одна вещь, которую я узнал, это использовать строку источника данных последней, это остановило запуск selectchange.
, так что теперь я получил:

public class MarketDetail
{
    public string marketId { get; set; }
    public string course { get; set; }
}
      public void myRaceList()
      {
        listBox1.DisplayMember = "course";
        listBox1.ValueMember = "marketId";
        listBox1.DataSource = new BindingSource(marketDictionary.Values, null);
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...