Hallo,
wenn ich das richtig verstehe, hast du eine Textdatei. In dieser Datei sind Rezepte aufgelistet. Und in jedem Rezept gibt es eine Eigenschaft "Allergene". Stimmt das alles so?
Wenn nicht musst du uns mal zeigen, wie die Textdatei genau aufgebaut ist.
Für mich klingt das bisher so, als ob du einfach die komplette Textdatei in die TextBox schreibst. Das macht das Anwenden von diversen Filtern (wie z.B. "Allergene") recht schwierig bzw. umständlich. Einfacher wäre es, wenn du z.B. eine Klasse anlegst:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| class Rezept { public string Name { get; set; } public List<string> Zutaten { get; set; } public List<string> Allergene { get; set; } } |
Die Rezepte behandelst du dann im Programm einfach als Liste:
C#-Quelltext
1:
| List<Rezepte> alleRezepte; |
Diese Liste kannst du dann z.B. über XML Serialisierung ganz einfach in einer XML Datei speichern und auch laden (
hier in der EE gibt es ein gutes Tutorial wie man sowas macht).
Und dann kann man auch einfach Filter darauf anwenden:
C#-Quelltext
1: 2:
| List<Rezepte> glutenfreieRezepte = alleRezepte.Where(rezept => rezept.Allergene.Contains("glutenfrei")).ToList(); |
In einer TextBox (würde ich persönlich nicht nehmen, lieber eine ListView o.ä.) könntest du dann die übrigen Rezepte anzeigen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| void UpdateText() { textBox.Clear(); foreach (Rezept rezept in glutenfreieRezepte) { textBox.AppendText("Rezept: " + rezept.Name + Environment.NewLine); textBox.AppendText(" Zutaten:" + Environment.NewLine); foreach (string zutat in rezept.Zutaten) { textBox.AppenText(" " + zutat + Environment.NewLine); } textBox.AppendText(" Allergene:" + Environment.NewLine); foreach (string allergen in rezept.Allergene) { textBox.AppenText(" " + allergen + Environment.NewLine); } } } |
Ich hoffe das hilft dir. Wenn dein Problem anderer Natur sein sollte, beschreibe es bitte etwas genauer.
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler