ぽんこつプログラマーの日々のまとめ


DisplayMember ValueMember とは

ListBox や ComboBox の Item に表示用データ以外の情報を持たせたい場合、DisplayMember( 表示データ ) と ValueMember( その他情報 ) を指定することで可能となる。使い方は以下のような感じ。

C# sample --------------------------
      ListBox lb = new ListBox();
      lb.DisplayMember = "Key";
      lb.ValueMember = "Value";

      KeyValuePair kvp1 = new KeyValuePair("hoge1", "fuga1");
      KeyValuePair kvp2 = new KeyValuePair("hoge2", "fuga2");
      KeyValuePair kvp3 = new KeyValuePair("hoge3", "fuga3");

      lb.Items.Add(kvp1);
      lb.Items.Add(kvp2);
      lb.Items.Add(kvp3);

      /* 表示結果 -> hoge1
       *           hoge2
       *           hoge3
       */

      for (int i = 0; i < lb.Items.Count; i++)
        Console.WriteLine(((KeyValuePair)lb.Items[i]).Value.ToString());

      /* 出力結果 -> fuga1
       *           fuga2
       *           fuga3
       */

同じノリでCheckedListBoxにも設定しようと思ったが、ピリオドを打っても上記のプロパティが表示されない…。調べた結果、非表示プロパティになっている模様で、候補一覧には出てこない状態になっている。

結果どうすれば使えるかと言うと、上記の様にDisplayMemberやValueMemberをそのまま書けば大丈夫みたい。ただデザイナがバグる可能性があるので、コードでコントロールを制御しない人は注意してください。

ちなみにMSDNも目を通したが、該当プロパティの項目ページはあるものの非表示であることは書いていない。さすがMSDN。二度と見ねえよ!


Add Comments

名前
 
  絵文字
 
 
webmaster

Redmusk

最西端の地で釣りとギターとゲームをこよなく愛する本業ぽんこつプログラマー。今を生きるを座右の銘とし日々快楽だけを求め切磋琢磨しております。

soundcloud