Существуют ли «DisplayMember» и «ValueMember» как свойства для элемента управления CheckedListBox? C # winforms - PullRequest
11 голосов
/ 27 сентября 2010

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

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

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

Но как я могу включить идентификатор?Существуют ли «DisplayMember» и «ValueMember» как свойства для элемента управления CheckedListBox?

Ответы [ 4 ]

17 голосов
/ 27 сентября 2010

Что ж, да, в CheckedListBox есть свойства DisplayMember и ValueMember, хотя документы для 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.Дополнительные сведения см. В разделе Как привязать элемент управления ComboBox или ListBox к Windows Forms.

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

8 голосов
/ 27 сентября 2010

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

Вы должны иметь возможность их использовать.

2 голосов
/ 13 ноября 2012

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

Вы можете установить свойства, как вы делаете в выпадающем списке:

   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;
   }
0 голосов
/ 09 сентября 2014

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

...