| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 1445: ComboBox zur Schriftauswahl (.NET) | | | Autor: Waver | Tipp anzeigenDatum: 24.04.09 09:01 |
| Schönes Beispiel.
Aber wie krieg ich es hin, dass nach der Auswahl einer Schriftart nur dessen Name in der Combobox angezeigt wird und nicht [FontFamily: Name=Arial Narrow]?
Waver | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Dieter (Moderator) | Datum: 24.04.09 09:12 |
| Ändere den Code wie folgt ab - dann funktioniert es, so wie Du das willst:
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 FontFamily.Families
.Add(oFont.Name)
Next
End With
' Wir möchten uns um die Ausgabe der
' Listen-Einträge selbst kümmern
ComboBox1.DrawMode = DrawMode.OwnerDrawFixed
End Sub 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)
Dim oFont As Font
' Neues Schrift-Objekt erzeugen und verfügbare Styles berücksichtigen
Dim oFamily As New FontFamily(sItem)
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 _________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Waver | Datum: 24.04.09 09:20 |
| Hey, vielen Dank für die schnelle Hilfe!
Hätte da noch eine Frage: Lässt sich das Beispiel auch in eine Klasse packen? | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Dieter (Moderator) | Datum: 24.04.09 09:30 |
| Klar geht das
Und sogar recht einfach:
Public Class FontComboBox
Inherits ComboBox
Public Sub New()
' alle verfügbaren Schriften auflisten
With Me.Items
For Each oFont As FontFamily In FontFamily.Families
.Add(oFont.Name)
Next
End With
' Wir möchten uns um die Ausgabe der
' Listen-Einträge selbst kümmern
Me.DrawMode = DrawMode.OwnerDrawFixed
End Sub
Private Sub FontComboBox_DrawItem(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem
' ComboBox-Eintrag (Schriftname)
Dim sItem As String = Me.Items(e.Index)
Dim oFont As Font
' Neues Schrift-Objekt erzeugen und verfügbare Styles berücksichtigen
Dim oFamily As New FontFamily(sItem)
If oFamily.IsStyleAvailable(FontStyle.Regular) Then
oFont = New Font(sItem, Me.Font.Size, FontStyle.Regular)
ElseIf oFamily.IsStyleAvailable(FontStyle.Italic) Then
oFont = New Font(sItem, Me.Font.Size, FontStyle.Italic)
ElseIf oFamily.IsStyleAvailable(FontStyle.Bold) Then
oFont = New Font(sItem, Me.Font.Size, FontStyle.Bold)
ElseIf oFamily.IsStyleAvailable(FontStyle.Underline) Then
oFont = New Font(sItem, Me.Font.Size, FontStyle.Underline)
Else
oFont = New Font(sItem, Me.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
End Class Programm kurz starten - wieder beenden.
Anschließend steht Dir das neue "Control" in der Toolbox zur Verfügung.
Jetzt nur noch das neue Control auf die Form ziehen und fertig.
_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Waver | Datum: 24.04.09 09:36 |
| Echt Klasse
Ist wirklich einfach (Dachte, dass es mit dem Ereignis evt Schwierigkeiten geben könnte)
Danke für deine Hilfe.
Waver | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Waver | Datum: 24.04.09 10:24 |
| Noch ein kleines Problem: Ich würde gerne die Schrifart des markierten Text einer RichTExtBox mit der in der Combobox ausgewählten Schriftart ändern. Bitte um Hilfe
Waver | |
Re: ComboBox zur Schriftauswahl (.NET) | | | Autor: Waver | Datum: 24.04.09 22:15 |
| Hab jetzt gemerkt, dass die Einträge in der Combobox doppelt vorhanden sind. Public Sub New wird beim aus Form ziehen, und noch einmal beim Starten der Anwendung ausgeführt. Habs mit einem .Clear versucht, nützt aber nichts. | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|