Hallo,
Ich habe im Internet den Code für eine Combobox mit Fonts gefunden und diesen in ein Usercontrol abgeändert. Alles funktioniert super, nur wenn ein Element ausgewählt wurde wird nicht nur die Schriftart, sondern auch die Größe angezeigt.
Jetzt suche ich nach einem OnDraw element für das Ausgewählte Objekt. Habt ihr einen Tipp für mich?
Schon Danke im Voraus!
Ich habe im Internet den Code für eine Combobox mit Fonts gefunden und diesen in ein Usercontrol abgeändert. Alles funktioniert super, nur wenn ein Element ausgewählt wurde wird nicht nur die Schriftart, sondern auch die Größe angezeigt.
Jetzt suche ich nach einem OnDraw element für das Ausgewählte Objekt. Habt ihr einen Tipp für mich?
VB.NET-Quellcode
- Public Class ATFontPicker
- Inherits System.Windows.Forms.ComboBox
- Public Sub New()
- Me.DrawMode = DrawMode.OwnerDrawFixed
- Me.Font = New Font("Microsoft Sans Serif, 11.25pt", 11.25)
- Me.ItemHeight = 20
- initFonts()
- End Sub
- Private Sub initFonts()
- Dim objFontFamily As FontFamily
- Dim objFontCollection As System.Drawing.Text.FontCollection
- Dim tempFont As Font
- objFontCollection = New System.Drawing.Text.InstalledFontCollection()
- For Each objFontFamily In objFontCollection.Families
- If objFontFamily.IsStyleAvailable(FontStyle.Regular) Then
- tempFont = New Font(objFontFamily, 14, FontStyle.Regular)
- ElseIf objFontFamily.IsStyleAvailable(FontStyle.Bold) Then
- tempFont = New Font(objFontFamily, 14, FontStyle.Bold)
- ElseIf objFontFamily.IsStyleAvailable(FontStyle.Italic) Then
- tempFont = New Font(objFontFamily, 14, FontStyle.Italic)
- Else
- tempFont = Nothing
- End If
- Dim lst As New ListViewItem
- lst.Font = tempFont
- lst.Text = tempFont.Name
- Me.Items.Add(tempFont)
- Next
- End Sub
- Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
- e.DrawBackground()
- If (e.State And DrawItemState.Focus) <> 0 Then
- e.DrawFocusRectangle()
- End If
- Dim objBrush As Brush = Nothing
- Try
- objBrush = New SolidBrush(e.ForeColor)
- 'objBrush = New SolidBrush(System.Drawing.Color.Cyan)
- Dim ofont As Font = DirectCast(Me.Items(e.Index), Font)
- e.Graphics.DrawString(ofont.Name, ofont, objBrush, e.Bounds)
- Finally
- If objBrush IsNot Nothing Then
- objBrush.Dispose()
- End If
- objBrush = Nothing
- End Try
- MyBase.OnDrawItem(e)
- End Sub
- End Class
Schon Danke im Voraus!