同じような投稿があったのですが、まだ初心者なので、よく分かりません…
VB.netで複数列コンボボックスを表示したのですが、分かりやすく教えて頂けませんか?
出来れば、列の表示幅を設定可能で。
よろしくお願いします。
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クラスを継承した専用のコントロールにしてあげると、再利用しやすくなりますよ。
ありがとうございました。
参考にして頑張ってみます。
ツイート | ![]() |