Как я могу поместить список в элемент с определенным значением Valuemember? - PullRequest
1 голос
/ 20 мая 2019

У меня есть winform со списком с источником данных списка структуры, где структура:

    public struct MakerRecord
    {
      public int MakerID { get; set; }
      public String MakerName { get; set; }

      public MakerRecord(int ID, String Name)
      {
        MakerID = ID;
        MakerName = Name;
      }
    }

и listbox.ValueMember = "MakerID" и listbox.DisplayMember = "MakerName"

Пользователь может либо выбрать элемент, и текст (например, MakerName) загружается в текстовое поле, где его можно редактировать, либо нажать кнопку «Добавить» и получить пустое текстовое поле.
После внесения изменений в текстовое поле,Пользователь нажимает кнопку Сохранить, и запись сохраняется в Базе данных, и список обновляется, что устанавливает SelectedIndex = -1.
Все хорошо.

Но я хочу поместить список обратно в запись, которая была отредактирована (или добавлена), и все, что у меня есть, это MakerID из операции db.Итак, как я могу установить SelectedIndex только из значения элемента?

Установка SelectedValue (т. Е. Lstbox.SelectedValue = MakerID) не влияет на SelectedIndex естественным образом.

1 Ответ

0 голосов
/ 20 мая 2019

Вы можете использовать свойство SelectedItem и выбрать нужный элемент

Используя предоставленную вами структуру, вот быстрый пример:

    private void button1_Click(object sender, EventArgs e)
    {
        cmbMarkers.DataSource = null;
        var markerList = new List<MarkerRecord>
        {
            new MarkerRecord(1, "first"), new MarkerRecord(2, "second")
        };
        cmbMarkers.ValueMember = "MarkerId";
        cmbMarkers.DisplayMember = "MarkerName";
        cmbMarkers.DataSource = markerList;
        cmbMarkers.SelectedItem = markerList.FirstOrDefault(mr => mr.MarkerId == 2); //second item selected
    }

В последней строке вы можете выбрать, какой элемент вы хотите выбрать.

...