ComboBoxに画像を表示したいと考えていますが、ぜんぜんわかりません。
マイクロソフトに参考になりそうなものがあったのですが、
VisualBasic2005で参照しようとすると変換され、動作はしますが
そもそもツールボックス内にコントロールが表示されません。
http://msdn.microsoft.com/ja-jp/library/cc440873.aspx
おそらくVB.NETとの何らかの違いなのでしょうが、
少し自力で解決するには難しいのでわかる方がいればご助言お願いします。
できるだけ具体的なコードで示していただけると助かります。
よろしくお願いします。
こんにちは。
試してみました。VB2005 さんのおっしゃるとおり、VisualBasic 2005 では
http://msdn.microsoft.com/ja-jp/library/cc440873.aspx で示されている DLL はツールボックスに表示できませんでした。しかし VisualBasic 2005 ように変換すれば上記リンクの通りに使用できます。
次の手順で作業して下さい。
あとは http://msdn.microsoft.com/ja-jp/library/cc440873.aspx のチュートリアルの通りです。試してみて下さい。
そのURLを参考にしていますが
1.VB2005を起動しフォームにコンボボックスを貼り付けます。
2.貼り付けたコンボボックスを選択し、プロパティのDrawModeをOwnerDrawFixedに変更します。
3.イメージリストを追加します。
4.イメージリストのプロパティのImagesに画像を追加します。
5.Formのロードイベントにコンボボックスの内容を設定します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.Items.Add("1行目") ComboBox1.Items.Add("2行目") ComboBox1.Items.Add("3行目") End Sub<BR>
5.コンボボックスのイベントからDrawItemを選択し、以下のコードを記述します。
Private Sub ComboBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem e.DrawBackground() e.DrawFocusRectangle() Dim bounds As New Rectangle bounds = e.Bounds Dim s As String = ComboBox1.Items(e.Index) Try If (ImageList1.Images.Count <> 0) Then ImageList1.Draw(e.Graphics, bounds.Left, bounds.Top, e.Index) e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left + ImageList1.Images(e.Index).Width, bounds.Top) Else e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left, bounds.Top) End If Catch ex As Exception e.Graphics.DrawString(s, e.Font, New SolidBrush(e.ForeColor), bounds.Left, bounds.Top) End Try End Sub
これで実行すれば画像表示されます。
コメント(0件)