View images + Text in ComboBox


Author
Message
Mimouni Mohamed
Mimouni Mohamed
StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)
Group: StrataFrame Users
Posts: 5, Visits: 50
Hello,

I try to put images + text in a ComboBox.

I tried with a ComboBox DrawItem but it does not work so I searched the internet and I found this code:

    Private Sub Ville_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.LIB_PAYS.DrawMode = DrawMode.OwnerDrawVariable
        Me.LIB_PAYS.DropDownStyle = ComboBoxStyle.DropDownList
    End Sub

    Private Sub LIB_PAYS_DrawItem(sender As Object, e As System.Windows.Forms.DrawItemEventArgs) Handles LIB_PAYS.DrawItem
        If e.Index <> -1 Then
            e.Graphics.DrawImage(Me.ImageList1.Images(e.Index), e.Bounds.Left, e.Bounds.Top)
            e.Graphics.DrawString(Me.LIB_PAYS.Items(e.Index).ToString, _
                                  Me.LIB_PAYS.Font, _
                                  System.Drawing.Brushes.Black, _
                                  New RectangleF(e.Bounds.X + 15, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
            e.DrawFocusRectangle()
        End If
    End Sub

I know that my ComboBox populated with BO



but it still not working so I turn to you to find out how?
is what my code or code that I found wrong?

Here is the result that shows me:

data:image/png;base64,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


cordially
Mimouni

StrataFrame Team
S
StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
Doing owner draw overrides all of the formatting logic for the combo box.  When you use the SF list population, we set the DataSource as a DataTable and set the DisplayMember and ValueMember.  The DisplayMember is basically ignored when you turn on owner draw, so you have to do it all manually.

You're really close, but you're problem is here:

 e.Graphics.DrawString(Me.LIB_PAYS.Items(e.Index).ToString, _
                                  Me.LIB_PAYS.Font, _
                                  System.Drawing.Brushes.Black, _
                                  New RectangleF(e.Bounds.X + 15, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))

The items collection is just returning a System.Data.DataRow, and it's ToString() method just returns "System.Data.DataRow".  You need to cast it as a data row, pull your field, then to string the field value:

 e.Graphics.DrawString(CType(Me.LIB_PAYS.Items(e.Index), DataRow)("FieldName").ToString, _
                                  Me.LIB_PAYS.Font, _
                                  System.Drawing.Brushes.Black, _
                                  New RectangleF(e.Bounds.X + 15, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))

Replace "FieldName" with what you need and you should be good to go.


Mimouni Mohamed
Mimouni Mohamed
StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)
Group: StrataFrame Users
Posts: 5, Visits: 50
Ben, thank you for the reply.

I applied your solution, I get an error : Unable to cast object of type 'System.Data.DataRowView' to type 'System.Data.DataRow'.
I changed DataRow and DataRowView by in this case he displays another message : LIB_PAYS is not a DataColumn DataRelation or for the table.


StrataFrame Team
S
StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)StrataFrame Developer (3K reputation)
Group: StrataFrame Developers
Posts: 3K, Visits: 2.5K
You're right, the IListSource.GetList() of the DataTable returns the DataView.  And if you're building the combo box off of the SF list population, we create the table with 2 or 3 values (depending upon whether you have a columns in your drop down):

display | dropdown | value

So, try this:

e.Graphics.DrawString(CType(Me.LIB_PAYS.Items(e.Index), DataRowView)("display").ToString, _
                                  Me.LIB_PAYS.Font, _
                                  System.Drawing.Brushes.Black, _
                                  New RectangleF(e.Bounds.X + 15, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
Mimouni Mohamed
Mimouni Mohamed
StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)StrataFrame Beginner (5 reputation)
Group: StrataFrame Users
Posts: 5, Visits: 50
Think you very match ben
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search