是否有“DisplayMember”和“ValueMember”,如CheckedListBox控件的属性? C#winforms

时间:2010-09-27 05:20:27

标签: c# winforms data-binding checkedlistbox

我有DataTable这个结构如下:

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

我通过将每一行添加为项目,将DataTable中的值显示为CheckedListBox控件。

但我如何加入身份证? 是否有“DisplayMember”和“ValueMember”,如CheckedListBox控件的属性?

4 个答案:

答案 0 :(得分:17)

是的,DisplayMember上有ValueMemberCheckedListBox个属性,但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窗体组合框或列表框控件绑定到数据。

鉴于以上代码有效,可能是在讨论更高级的数据绑定,使用DataSource

答案 1 :(得分:8)

DataSource,DisplayMember和ValueMember属性可用于此控件,但它们不会显示在IntelliSense中:MSDN

你应该可以使用它们。

答案 2 :(得分:2)

是的,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;
   }

答案 3 :(得分:0)

The french documentation说:Cettepropriéténes'appliquepasàcetteclasse。 “此酒店不适用于此课程”。 在美国文档中看不到这一小段文字......