Heute möchten wir Ihnen eine ComboBox vorstellen, in der alle verfügbaren Schriften zur Auswahl angezeigt werden. Die jeweiligen Einträge sollen hierbei selbstverständlich in der jeweiligen Schriftart angezeigt werden! Das Füllen der ComboBox mit den verfügbaren Schriften erledigen wir im Form_Load Ereignis. Hier wird dem Control dann auch mitgeteilt, dass die Darstellung der Listen-Elemente nicht autom. erfolgen soll, sondern von uns selbst gezeichnet werden, was durch Setzen der DrawMode-Eigenschaft auf "OwnerDrawFixed" festgelegt wird. Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' alle verfügbaren Schriften auflisten With ComboBox1.Items For Each oFont As FontFamily In Font.FontFamily.Families .Add(oFont) Next End With ' Wir möchten uns um die Ausgabe der ' Listen-Einträge selbst kümmern ComboBox1.DrawMode = DrawMode.OwnerDrawFixed End Sub Wann immer jetzt ein Eintrag der ComboBox-Liste gezeichnet werden muss, löst das Control das DrawItem-Ereignis aus, d.h. hier muss unser Code zum Zeichnen des Eintrags eingefügt werden: Private Sub ComboBox1_DrawItem(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem ' ComboBox-Eintrag (Schriftname) Dim sItem As String = ComboBox1.Items(e.Index).Name Dim oFont As Font ' Neues Schrift-Objekt erzeugen und verfügbare Styles berücksichtigen Dim oFamily As FontFamily = ComboBox1.Items(e.Index) If oFamily.IsStyleAvailable(FontStyle.Regular) Then oFont = New Font(sItem, ComboBox1.Font.Size, FontStyle.Regular) ElseIf oFamily.IsStyleAvailable(FontStyle.Italic) Then oFont = New Font(sItem, ComboBox1.Font.Size, FontStyle.Italic) ElseIf oFamily.IsStyleAvailable(FontStyle.Bold) Then oFont = New Font(sItem, ComboBox1.Font.Size, FontStyle.Bold) ElseIf oFamily.IsStyleAvailable(FontStyle.Underline) Then oFont = New Font(sItem, ComboBox1.Font.Size, FontStyle.Underline) Else oFont = New Font(sItem, ComboBox1.Font.Size, FontStyle.Strikeout) End If ' Brush für Textfarbe Dim oBrush As Brush = New SolidBrush(e.ForeColor) ' Hintergrund e.DrawBackground() ' Text (Schriftname) ausgeben e.Graphics.DrawString(sItem, oFont, oBrush, e.Bounds.X, e.Bounds.Y) ' Aufräumen oBrush.Dispose() End Sub Dieser Tipp wurde bereits 18.347 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |