Autor Beitrag
Max064
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 13.08.10 13:10 
Hi,

ich habe ein (sicherlich leichtes) Problem, aber ich bekomme es irgendwie nicht hin:

Ich habe ein List box, in die ich alle möglichen FontFamily reinschreibe:
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (FontFamily oneFontFamily in FontFamily.Families)
{
     _listboxFonts.Items.Add(oneFontFamily.Name);
}


Nun möchte ich einen Text adden, der die in der listbox ausgewählte FontFamily besitzt. Doch wie kann ich die Listbox auslesen und da eine FontFamily daraus machen?
In anderen Worten: Wenn ich die Textbox auslese, erhalte ich ja einen String. Wie kann ich den in eine FontFamily wandeln?


lg Max
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 13.08.10 13:17 
Da gibt es wie immer mehrere Möglichkeiten.
Ich würde einfach die nochmal eine Schleife wie beim hinzufügen machen, die Namen vergleichen und wenn der Name passt die FontFamily setzen.
(Schau aber mal nach ob auch wirklich alle eindeutig sind und das sich die Auflistung zwischen hinzufügen und auswahl der ListBox nicht ändert.)
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Fr 13.08.10 17:02 
Oder Du erstellst Dir eine Klasse, die als Property die FontFamily aufnimmt, und in einer überschriebenen ToString()-Methode den Namen der Property zurück gibt. Diese wird auch in der ListBox als Anzeige verwendet.

Klasse ListBoxItem
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class ListBoxItem
{
  public FontFamily FontFamily { get; private set; }

  public ListBoxItem(FontFamily fontFamily)
  {
    this.FontFamily = fontFamily;
  }

  public override string ToString()
  {
    return this.FontFamily.Name;
    }
}


Und damm kannst Du die FontFamilies der ListBox hinzufügen

ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (FontFamily oneFontFamily in FontFamily.Families)
{
     _listboxFonts.Items.Add(new ListBoxItem(oneFontFamily));
}


Und auslesen der Family

ausblenden C#-Quelltext
1:
  FontFamily family = (_listboxFonts.SelectedItem as ListBoxItem).FontFamily;					


Mit der Schleife und dem vergleichen geht natürlich auch, aber so finde ich es ehrlich gesagt schöner.
Und schneller. Angenommen, Du hättest eine Liste von irgendws mit 2000 Einträgen. Und Du hast das letzte ausgewählt.
Sollen nun 1999 Einräge durchgelaufen und mit einer Stringoperation verglichen werden?

Gruss, Marko

Für diesen Beitrag haben gedankt: Max064
Max064 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Do 19.08.10 07:24 
Super genau sowas habe ich gesucht! Vielen Dank!