VB.netで複数列コンボボックスを表示するには?


マミー  2003-11-08 12:54:52  No: 80325

同じような投稿があったのですが、まだ初心者なので、よく分かりません…
VB.netで複数列コンボボックスを表示したのですが、分かりやすく教えて頂けませんか?
出来れば、列の表示幅を設定可能で。
よろしくお願いします。


魔界の仮面弁士  2003-11-08 22:35:19  No: 80326

System.Windows.Forms.ComboBox 自体には、複数列を表示させる機能はありません。そこで、自分でそのような機能を作りこむ事になります。

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090008.txt
上記にて回答した方法は、DrawItemイベントを使って、「オーナードロー」を行うという物です。オーナードローとは、項目の描画処理を Windows にやらせるのではなく(通常は、Windows が描画処理を行ってくれます)、替わりに、プログラム側(オーナー)で独自に行うことを言います。
プログラムで独自の描画処理を記述していますので、複数列のテキストを描画したり、背景色やフォントを変更して描画したりする事もできるわけです。  

ComboBox.DrawMode プロパティを Normal以外の値に変更すると、ドロップダウン時に、DrawItem イベントが発生するようになります。つまり、標準のドロップダウンリストを Windows に表示させる替わりに、プログラマが自分で、(GDI+ を使って)独自に描画してしまおうという事です。

オーナードローの使い方は、.NET技術者向けサイトでも、良く取り上げられていますので、それらを参考にして見ては如何でしょうか。

http://www.mitene.or.jp/~sugisita/family/papa/vb/net/net0011.html
http://www.mitene.or.jp/~sugisita/family/papa/vb/net/net0012.html
http://santamartaofthepeace.hp.infoseek.co.jp/vbdotnet/menuitemownerdraw.html
http://santamartaofthepeace.hp.infoseek.co.jp/vbdotnet/ownerdraw.html

> 出来れば、列の表示幅を設定可能で。
頑張って、ご自身の力で実装してみてください。
うまく表示できるものができたら、ComboBoxクラスを継承した専用のコントロールにしてあげると、再利用しやすくなりますよ。


マミー  2003-11-09 08:47:33  No: 80327

ありがとうございました。
参考にして頑張ってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加