Подтвердить что ты не робот

Есть ли "DisplayMember" и "ValueMember", как "Свойства для контроля CheckedListBox"? С# winforms

У меня есть DataTable со следующей структурой:

ID | VALUE
----------------
1  | Item 1
2  | Item 2
3  | Item 3

И я отображаю значения из DataTable в элемент управления CheckedListBox, добавляя каждую строку в качестве элемента.

Но как включить идентификатор? Есть ли "DisplayMember" и "ValueMember", как "Свойства для контроля CheckedListBox"?

4b9b3361

Ответ 1

Ну да, есть DisplayMember и ValueMember свойства на CheckedListBox, хотя документы для ValueMember утверждают, что это "не относящихся к этому классу".

Вот пример, показывающий DisplayMember:

using System;
using System.Drawing;
using System.Windows.Forms;

class Test
{
    static void Main()
    {
        CheckedListBox clb = new CheckedListBox {
            DisplayMember = "Foo",
            ValueMember = "Bar",
            Items = {
                new { Foo = "Hello", Bar = 10 },
                new { Foo = "There", Bar = 20 }
            }
        };
        Form f = new Form
        {
            Controls = { clb }
        };
        Application.Run(f);
    }
}

Также обратите внимание, что состояние документов:

Вы не можете привязывать данные к CheckedListBox. Вместо этого используйте ComboBox или ListBox. Дополнительные сведения см. В разделе Практическое руководство. Связывание компонентов Windows Forms ComboBox или ListBox с данными.

Учитывая приведенный выше код, который, по-видимому, говорит о более сложной привязке данных, используя DataSource?

Ответ 2

Свойства DataSource, DisplayMember и ValueMember доступны для этого элемента управления, но они не отображаются в IntelliSense: MSDN

Вы должны быть в состоянии использовать их, хотя.

Ответ 3

Да, в CheckedListBox есть свойства "display member" и "value member".

Вы можете установить свойства так же, как в combobox:

   public void PopulateListBox(System.Windows.Forms.CheckedListBox lb, string displayMember, string valueMember, DataTable data)
   {
        lb.DataSource = data; // where data is the datatable. datatable filled up with //data fetched from database.
        lb.ValueMember = valueMember;
        lb.DisplayMember = displayMember;
   }

Ответ 4

Французская документация говорит: Cette propriété ne s'applique pas à cette classe. Msgstr "Это свойство не относится к этому классу". Эта небольшая строка текста не отображается в нашей документации...