vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ComboBox zur Schriftauswahl (.NET) 
Autor: ModeratorDieter (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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ComboBox zur Schriftauswahl (.NET) 
Autor: ModeratorDieter (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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: ComboBox zur Schriftauswahl (.NET) 
Autor: ModeratorDieter (Moderator)
Datum: 24.04.09 11:08

Private Sub FontComboBox1_SelectedIndexChanged(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles FontComboBox1.SelectedIndexChanged
 
  With FontComboBox1
    If .SelectedIndex >= 0 Then
      Dim oFont As Font = Me.RichTextBox1.SelectionFont
      Me.RichTextBox1.SelectionFont = New Font(.Text, oFont.Size, oFont.Style)
    End If
  End With
End Sub

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel