ComboBoxの DataSource に List
例えば下記のような場合です。(C#)
//ComboBoxNullテストList
lst = new List (); lst.Add(null);
lst.Add("a");
lst.Add("b");
lst.Add("c");
comboBox1.DataSource = lst;
この場合、最初に追加した値が null ですが、実際にコンボボックスを表示すると下記のようになります。
次に、null を3番目にすると、下記のようになりました。
//ComboBoxNullテストList
lst = new List (); lst.Add("a");
lst.Add("b");
lst.Add(null);
lst.Add("c");
つまり、null のところまでは要素として入っていますが、それ以降は無視という感じです。
上記は List
System.Collections.ArrayList ary = new System.Collections.ArrayList();ary.Add(new System.Collections.DictionaryEntry(null, null));
ary.Add(new System.Collections.DictionaryEntry("a", 1));
ary.Add(new System.Collections.DictionaryEntry("b", 2));
ary.Add(null);
ary.Add(new System.Collections.DictionaryEntry("c", 3));
comboBox1.DataSource = ary;
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value";
これだと5行目の null のところで、ArgumentNullException が発生し「値を Null にすることはできません。」と怒られます。
5行をのけると、最後の所までちゃんと追加されるんですよね。
なので、今回の現象は List<型> を直接バインドしたときのみ起こるのかもしれません。