Hallo!
Ich arbeite an nem kleinen Programm, das verschiedene Datensätze in einem Treeview-Element geordnet darstellt. Die Datensätze speichere ich zeilenweise per StreamWriter in einer Textdatei, genauso lese ich sie auch wieder ein.
Jetzt würde ich beim Einlesen bzw. am besten schon beim Übertragen in die TreeView doppelte Einträge filtern/ das Eintragen solcher direkt verhindern.
Da ich allerdings noch neu in C# bin und ich mit TreeNodeCollection.Contains bzw. ContainsKey keine Überprüfung auf doppelten Text bewerkstelligen konnte, wollte ich mich mal erkundigen, ob man die Strings der Childnodes separat überprüfen kann, wenn ja, mit welcher Methode. Code muss nicht sein, ich wusel mir das schon irgendwie selbst zusammen.
Hier der Code für das Eintragen in die TreeView:
Anbei ein Screenie, wie die Benutzeroberfläche aussieht; und zur Verdeutlichung des Problems.
private void Ok_Click(object sender, System.EventArgs e)//Click-Event für Ok
{
//Festlegung des Strings "Datensatz" für den als Knoten zu speichernden Text
{
string Datensatz = null;
//String anfangs leer
Datensatz = textBox1.Text + ";";
Datensatz = Datensatz + textBox2.Text + ";";
Datensatz = Datensatz + textBox3.Text + ";";
Datensatz = Datensatz + textBox4.Text + ";";
Datensatz = Datensatz + textBox5.Text;
//Der string "Datensatz" ergibt sich aus den Inhalten aller 5 textBoxen(getrennt durch semicola)
string sub = Datensatz.Trim().Substring(0, 1);
//Definierung eines Substrings, der den ersten Buchstaben des jeweiligen "item"-strings darstellt
sub = sub.ToUpper();
//Konvertierung des Substrings in einen Großbuchstaben, z.B. bei falscher Usereingabe
bool Knotengefunden = false;
/*Festlegung der booleschen Variable Knotengefunden
* bedeutet: anfangs sind keine Hauptknoten vorhanden*/
foreach (TreeNode Knoten1 in treeView1.Nodes)
//Für jeden Hauptknoten "Knoten" in den "Node"-Elementen der treeview
{
if (Knoten1.Text == sub)
/*Wenn der Text des Knotens dem string "sub",also dem
* Anfangsbuchstaben des Nachnamens des Datensatzes entspricht*/
{
Knoten1.Nodes.Add(Datensatz);
//Füge dem Haupt
Knotengefunden = true;
//
}
//Zeige an "Knoten gefunden"
}
if (!Knotengefunden)
{
TreeNode Knoten;
//Festlegung des Hauptknotens "Knoten"
Knoten = treeView1.Nodes.Add(sub);
if (!Knoten.Nodes.ContainsKey(Datensatz))
Knoten.Nodes.Add(Datensatz);
}/*
//Füge einen Oberknoten mit dem Text string "sub" ein, also dem Anfangsbuchstaben des Nachnamens
Knoten.Nodes.Add(Datensatz.Trim());
//Füge einen neuen Unterknoten mit dem string "Datensatz" hinzu
Knoten.Expand();
//Öffne den Oberknoten und zeige den Unterknoten an*/
}
}
Danke schonmal im voraus für Lösungsansätze!
Gruß, Zieg0re
P.S: Unorthodoxen/falschen Programmier- bzw. Einrückstil bitte ich zu entschuldigen, ich programmiere erst seit 2 Wochen.
P.P.S: Wer Rechtschreibfehler findet, darf sie behalten.