久々更新です。すみません。
最近、わけあってC#.netのC/Sシステムに触ってます。
C#.netといえば超が付くぐらい重量級のフレームワークですね。
今回は、そんなC#.netのマニアックなネタを適当に。

C#.netのComboBoxは、DataBindingするとデータベースのレコードを自動でバインドしてくれ、見かけ上の動作も気にならない程度には早く動きます。
しかし、訳アリでDataBindingが使えないときには、手動で項目を追加しなくてはなりません。

手動で項目を追加するメソッドはComboBox.Items.Add(Object item)で、引数がObjectクラスなので何でも突っ込めますが、簡単なルールがあるようです。

それは、

  1. 引数のObjectクラスに”ID”というプロパティがあると、自動でValueMemberに登録する
  2. 引数のObjectクラスに”NAME”というプロパティがあると、自動でDisplayMemberに登録する

というものです。

ですので、簡単にComboBoxItemなるクラスを作り、ID,NAMEというプロパティを作ると扱いが簡単になります。

また、ComboBox.Items.Add()はわりと動作が遅いです。
配列などをループして1つずつ追加していくとバカにならないコストがかかってしまいます。
そういった場合は、ComboBox.Items.AddRange(object[] items)を使うと、私の環境ではComboBox.Items.Add()をループで回すよりも半分ぐらいの時間ですみました。
最近だと、C#.netのC/Sシステムで作るのは殆どがオーダーメイドの業務システムだと思います。
そういった業務システムだと、ユーザービリティ云々よりも小さな労力でできる、上記のようなちょっとした工夫が想像上に喜ばれたりしますね。

以上、ちょっとしたことでした。

© 2011 sanojimaru.com Suffusion theme by Sayontan Sinha