【C#】コンボボックスに複数列を表示する

今更ながらC#の勉強をしています。

Accessのようにコンボボックスに複数の列を表示する方法です。
結構サンプルはあるんですが、いまいち複雑で汎用性がないのが多いので汎用性のあるものを書いてみました。
コンボボックスに複数列表示
これがAccessバージョンです。

これをVisual C#で実現します。
コンボボックスに複数列表示
最終的にこのようになります。

まずはデザインで通常のコンボボックスを置きます。
DrawModeはOwnerDrawFixedにします。

フォームのLoadイベントでコンボボックスの値を設定します。
このときコンボボックスのデータソースはDataTableにしてください。
基本的にコンボボックスの値はDBから取ると思いますのでこちらも汎用メソッドを適当なユーティリティクラスに作成します。

このメソッドを使用してコンボボックスに値を設定します。

Utility.GetComboBoxDataに表示したい列を含んだSQLを渡すだけです。

次に複数列を表示するためのstaticな以下のメソッドを適当なユーティリティクラスに書きます。

これをコンボボックスのDrawItemイベントで呼び出します。

引数のint[]はそれぞれの列を表示する幅、string[]はコンボボックスに設定したデータのどの列を表示するかです。
引数の配列の数を増やせば何列でも表示可能です。

選択された値を取得する場合は以下のようにします。

最初のデータソース設定時に表示しない列も含んで設定しておけば、あとからその項目を取得することも可能です。

ただDrawItemイベントが遅くなるのが難点。



スポンサーサイト
アフィリエイトはエーハチネット
ドメイン取るならお名前.com

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です