Announcement

Collapse
No announcement yet.

treeview vergleich

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • treeview vergleich

    Hallo Entwickler

    ich habe zwei Treeviews die miteinander verglichen werden sollen... nur weiss ich überhaupt nicht wie ich das anstellen soll.

    ich bin momentan auf der suche nach einer komponente die das vergleichen gleich mit an board hat...

    oder gibt es einen einfacheren weg um zwei treeviews zu vergleichen?


    gruss,
    streezer

  • #2
    Hallo,

    Jede TreeView bezieht von irgendwoher ihre Elemente - wie waer's, wenn du diese beiden Datenquellen miteinander vergleichst.
    Ich koennte mir vorstellen, dass das ohne (viel) Aufwand moeglich ist.
    *-- robert.oh. --*

    Comment


    • #3
      Originally posted by robert.oh. View Post
      Hallo,

      Jede TreeView bezieht von irgendwoher ihre Elemente - wie waer's, wenn du diese beiden Datenquellen miteinander vergleichst.
      Ich koennte mir vorstellen, dass das ohne (viel) Aufwand moeglich ist.
      die nodes werden aus einem textfile herausgelesen... das problem ist die darstellung - wie stelle ich das am besten dar?

      Comment


      • #4
        Hallo,

        zwei TreeViews könnten zB somit verglichen werden (erster Versuch - kann sicher lich noch optimiert werden):

        [highlight=c#]
        /// <summary>
        /// Vergleich zwei TreeViews auf idente Nodes:
        /// </summary>
        /// <param name="treeView1">
        /// 1. TreeView
        /// </param>
        /// <param name="treeView2">
        /// 2. TreeView
        /// </param>
        /// <returns>
        /// true: gleich
        /// false: ungleich
        /// </returns>
        /// <example>
        /// bool treeViewIdent = TreeViewVergleichen(
        /// treeView1.Nodes, treeView2.Nodes)
        /// </example>
        /// <remarks>
        /// Es wird zuerst geprüft ob die Anzahl der Knoten gleich ist.
        /// Dann erfolgt eine Prüfung auf Gleichheit der jeweiligen Knoten.
        /// Dann wird geprüft ob die jeweiligen Knoten Unterknoten haben bzw.
        /// deren Anzahl gleich. Sind Unterknoten vorhanden wird mittels
        /// Rekursion der Prüfprozess für Unterknoten begonnen.
        /// Beim Auftreten der ersten Ungleichheit wird fals zurückgegeben.
        /// </remarks>
        public bool TreeViewVergleichen(TreeNodeCollection nodes1, TreeNodeCollection nodes2)
        {
        // 1. Vergleich der Anzahl der Knoten:
        if (nodes1.Count != nodes2.Count)
        return false;

        // 2. Vergleich der jeweiligen Knoten:
        foreach (TreeNode node1 in nodes1)
        {
        TreeNode node2 = nodes2[node1.Index];

        // Vergleich der Knoten. Es können auch weiter Eigenschaften
        // geprüft werden (Boolesche Algebra), zB die Tag-Eigenschaft:
        // if ((node1.Text != node2.Text) || (node1.Tag != node2.Tag))
        if (node1.Text != node2.Text)
        return false;

        // 1. Vergleich der Anzahl der (eventuellen) Unterknoten:
        if (node1.Nodes.Count != node2.Nodes.Count)
        return false;

        // Rekursion? Falls Unterknoten vorhanden -> Prüfung neu beginnen:
        if (node1.Nodes.Count > 0)
        {
        // Rekursiver Aufruf -> Ergebnis false -> ungleich
        if (!TreeViewVergleichen(node1.Nodes, node2.Nodes))
        return false;
        }
        }

        // Bisher nicht verlassen -> ident:
        return true;
        }
        [/highlight]

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment

        Working...
        X