VB 2008: Label-Font von String setzen

Hallo zusammen,

ich möchte während der Laufzeit meines Forms die Schriftart für mein Label1 ändern und zwar immer dann, wenn in einer Listbox ein anderer Wert gewählt wurde. Google-Suchen liefen ins Leere oder haben so tolle Antworten geliefert, dass ich kein Wort verstanden habe.

So habe ich es bis jetzt versucht:

Private Sub ListBox1\_SelectedIndexChanged(ByVal sender As \_ System.Object, ByVal e As System.EventArgs) Handles \_ ListBox1.SelectedIndexChanged
 Dim text As String 'Zwischenvariable zum Abspeichern des Werts
 text = TextBox1.Text 'Text setzen, der ausgegeben werden soll
 Label1.Text = text
 Dim schrift As String = ListBox1.SelectedItem

 'Bei Microsoft gefunden
 Dim converter As System.ComponentModel.TypeConverter = \_
 System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
 Dim font1 As Font = CType(converter.ConvertFromString(schrift), Font)
 MsgBox(font1, MsgBoxStyle.OkOnly)

 Me.Label1.Font = font1

 End Sub

Vielen Dank im Voraus.

DA

  1. Benenne deine Steuerelemente richtig.
  2. Die Font-Klasse bietet einen Konstruktor Font(String, Single) an.

Grüße, JasonDelife.

  1. Benenne deine Steuerelemente richtig.

Warum sind die falsch? Ich habe lediglich den Standard verwendet, weil das Ganze nicht so groß wird, dass ich den Überblick verlieren kann.

  1. Die Font-Klasse bietet einen Konstruktor Font(String,
    Single) an.

Ich denke, der ist nur Read-Only?

LG

DA

Zu 1:
Falsch sind die nicht. Aber es ist quasi Gesetz, dass man die Steuerelemente benennt. Auch wenn es nur wenige sind. Aber das bleibt dir überlassen :wink:.
Zu 2:
Wie kann denn ein Konstruktor ReadOnly sein?
Oder meinst du das Font-Property? Das ist eigentlich nicht ReadOnly.

Grüße, JasonDelife.

Ich meinte das Font-Property. Das ist lt. VB2008 read-only.

Ich kenne inzwischen mein Problem. Bin aber trotzdem noch nicht viel weiter. In meinem String war bisher der volle Dateiname. Den kann man natürlich nicht anzeigen lassen.
Das mache ich jetzt korrekt, dass er automatisch die Fonts z.B. aus dem Windows-Ordner lädt. Jetzt komme ich allerdings nicht mehr an den Dateinamen ran.

Das habe ich bis jetzt erreicht:

Private Sub ListBox1\_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
 Dim text As String
 text = TextBox1.Text
 Label1.Text = text
 Dim schrift As String = ListBox1.SelectedItem
 schrift = schrift + ", 12pt"

 Dim converter As System.ComponentModel.TypeConverter = \_
 System.ComponentModel.TypeDescriptor.GetConverter(GetType(Font))
 Try
 Dim font1 As Font = CType(converter.ConvertFromString(schrift), Font)
 Me.Label1.Font = font1
 Catch ex As Exception
 Me.Label1.Text = "Schriftart kann nicht angezeigt werden."
 Me.Label1.Font = New Font("Arial", 12)
 End Try

 End Sub

 Function fonts\_laden()
 'the current font
 Dim installedFonts As New InstalledFontCollection

 'sample text
 ListBox1.Items.Clear()
 For Each family As FontFamily In installedFonts.Families
 ListBox1.Items.Add(family.Name)
 Next
 End Function

LG

DA