Is there “DisplayMember” and “ValueMember” like Pr

2019-01-26 06:41发布

I have this DataTable with the following structure:

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

And I display the values from the DataTable into a CheckedListBox control by adding each row as an item.

But how can I include the ID? Is there "DisplayMember" and "ValueMember" like Properties for CheckedListBox control?

4条回答
兄弟一词,经得起流年.
2楼-- · 2019-01-26 06:54

The DataSource, DisplayMember and ValueMember properties are available for this control but they are not displayed in the IntelliSense: MSDN

You should be able to use them though.

查看更多
成全新的幸福
3楼-- · 2019-01-26 06:55

The french documentation say : Cette propriété ne s'applique pas à cette classe. "This property does not apply for this class". This little line of text is not visible in the us documentation...

查看更多
时光不老,我们不散
4楼-- · 2019-01-26 07:08

Yes there are 'display member' and 'value member' properties in CheckedListBox.

You can set the properties as you do in 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;
   }
查看更多
叼着烟拽天下
5楼-- · 2019-01-26 07:19

Well yes, there are DisplayMember and ValueMember properties on CheckedListBox, although the docs for ValueMember claim it's "not relevant to this class".

Here's a quick example showing DisplayMember working:

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);
    }
}

Also note that the docs state:

You cannot bind data to a CheckedListBox. Use a ComboBox or a ListBox for this instead. For more information, see How to: Bind a Windows Forms ComboBox or ListBox Control to Data.

Given the above code which works, presumably it's talking about more advanced data binding, using DataSource?

查看更多
登录 后发表回答