ComboBox 基本のき VB2005

VB Tips And Sample(HOME)(VB.NET Sample インデックス)

ComboBox 基本のき VB2005

image + combobox フォームに
ComboBox一つ
ImageList一つ
を貼り付ける。
コンボボックスのプロパティーを設定する。赤で囲んでいるところ。
次にリストボックスの画像サイズのプロパティーを設定。
で、実際にイメージを追加する。
あとは、下記のソースをコピペして、出来上がりです。


ポイント
今回は、オーナードローという機能を使って、イメージをコンボに描いてみました。
また、せっかくなので、画像をイメージリストに取り込んで表示というVBライク(コントロールライク)なサンプルにしました。
(要するに、コンボのitemにはオブジェクトが入るので、画像を放り込んで、コンボ自身に描かせてみたと言うサンプルになります。)
オーナードローのソースの部分の解説は次回にいたします。
 



Public Class Form1

   

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'プロパティーで設定する
        'ComboBoxStyle.DropDownList
        'DrawMode.OwnerDrawFixed
        'ItemHeight = 46 '高さはイメージリストのイメージのサイズに合わせる

        AddHandler ComboBox1.DrawItem, AddressOf ComboBox1_DrawItem

        Dim i As Integer = 0
        'せっかくなので 
        'オブジェクトを追加してみよう!
        Do Until Me.ImageList1.Images.Count <= i
            Me.ComboBox1.Items.Add(Me.ImageList1.Images(i))
            i = i + 1
        Loop

    End Sub


    Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs)

        e.DrawBackground()

        Dim cmb As Windows.Forms.ComboBox = CType(sender, Windows.Forms.ComboBox)

        Dim p As Point
        p.X = e.Bounds.X
        p.Y = e.Bounds.Y

        '項目に表示する画像
        Dim img As Image
        If e.Index > -1 Then
            img = cmb.Items(e.Index)
        Else
            img = Me.ImageList1.Images(0)
        End If

        e.Graphics.DrawImage(img, p)

        Debug.Print(cmb.Items.Count.ToString)

        e.DrawFocusRectangle()


    End Sub


End Class