11

私はこれDataTableを次の構造で持っています:

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

そして、各行をアイテムとして追加することDataTableで、コントロールに値を表示します。CheckedListBox

しかし、どうすればIDを含めることができますか? CheckedListBox コントロールのプロパティのような「DisplayMember」と「ValueMember」はありますか?

4

4 に答える 4

17

はい、 にはDisplayMemberValueMemberプロパティがあります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 フォームの ComboBox または ListBox コントロールをデータにバインドする」を参照してください。

動作する上記のコードを考えると、おそらくそれはより高度なデータ バインディングについて話しているのDataSourceでしょう。

于 2010-09-27T05:25:24.947 に答える
8

DataSource、DisplayMember、および ValueMember プロパティはこのコントロールで使用できますが、IntelliSense には表示されません: MSDN

ただし、それらを使用できるはずです。

于 2010-09-27T05:29:21.053 に答える
2

はい、CheckedListBox には「表示メンバー」と「値メンバー」のプロパティがあります。

コンボボックスで行うように、プロパティを設定できます。

   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;
   }
于 2012-11-13T13:29:30.093 に答える