Announcement

Collapse
No announcement yet.

TreeView neu laden

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

  • TreeView neu laden

    Hallo,

    kann man eine TreeView neu laden nachdem zum Beispiel ein neuer Ordner hinzugefügt wurde, ohne das man sie nochmal komplett neu aufrufen muss?
    Also das man nicht nochmal den kompletten Code vom füllen hat?

    Odre das vielleicht einfach nur der Teil neu geladen wird in dem gereade der Ordner hinzugefügt wurde?
    Man muss ja dann eigeindlich nicht gleich die ganze TreeView neu laden...

    Danke schonmal
    C# bringt mich noch um den Verstand

  • #2
    Woher weisst du denn dass ein neuer Ordner hinzugefügt wurde?

    Comment


    • #3
      Den füge ich selbst hinzu. Der wird nur eben ich gleich angezeigt, sondern erst wenn ich einen überordner anklicke und dann wieder in den anderen rein gehe.
      Und ich hätte jetzt gern, dass sich das automatisch aktualisiert.
      C# bringt mich noch um den Verstand

      Comment


      • #4
        Wo fügst den hinzu? In deinem Programm oder im Explorer von Windows?

        Comment


        • #5
          In meinem Programm.
          Mit CreateDirectory
          C# bringt mich noch um den Verstand

          Comment


          • #6
            Na dann brauchst Du doch bloß im Baum nach dem CreateDirector an entsprechender Stelle ein neues TreeItem einhängen.

            Comment


            • #7
              Wusste nichmal das es sowas gibt

              Wie sprech ich den denn an?
              C# bringt mich noch um den Verstand

              Comment


              • #8
                Du musst doch das TreeView irgendwo erzeugen. Oder wie sonst kommen die Daten in das TreeView?

                Comment


                • #9
                  Ja na die TreeView wird im AfterSelect erzeugt.
                  C# bringt mich noch um den Verstand

                  Comment


                  • #10
                    Also hast Du einen Tree der Deine Ordnerstruktur wiederspiegelt. Und wenn Du einen neuen Ordner einfügst mit CreateDirectory hängst Du in der entsprechenden Stelle im TreeView einen neuen TreeNode rein. Fertig.

                    Comment


                    • #11
                      Ja genau da komm wa jetz zum Problem...
                      Ich hab das ja versucht ... vermutlich mit dem falschen Aufruf ... aba das ging nich.
                      Wollte es einfach nur mit .Add hinzufügen macht er aber nich, also macht er schon aber eben nicht an der richtigen stelle und auch nicht als Ordner sonder er schreibt den Pfad ... (was auch irgendwie Logisch is da ja der Ordner durch einen Pfad definiert wird... oder eben die Stelle)
                      Aber komm eben nich weiter irgendwie denk ich da falsch und hab keinen schimmer wie das nun gehen soll...
                      C# bringt mich noch um den Verstand

                      Comment


                      • #12
                        Sorry, aber man sollte halt auch nicht nur Code den irgendwer in einem Forum postet zusammenkopieren und hoffen dass er dann das macht was man will, sondern auch verstehen was dieser tut und wie man ihn für sein Ziel einsetzen kann.

                        So wie Du Deine Probleme beschreibst kann Dir leider keiner helfen. Niemand hat einen Plan wie Dein Baum aussieht, wie Du ihn befüllst oder wie die Datenstruktur aussieht.

                        Ich kann nur raten und darauf hab ich keine Lust. Entweder das Problem besser beschreiben oder selbst probieren.

                        Comment


                        • #13
                          Ok meine TreeView zeigt mir Laufwerk C: .
                          Mit allen Ordnern und so weiter deren Inhalt wird in ner ListView angezegt.
                          [highlight=c#]
                          //lösche Knoteninhalt
                          e.Node.Nodes.Clear();

                          DirectoryInfo di = new DirectoryInfo((string)e.Node.Tag);
                          foreach (DirectoryInfo dir in di.GetDirectories())
                          {

                          TreeNode tn1 = new TreeNode();
                          tn1.Tag = (string)dir.FullName;
                          tn1.Text = dir.Name;
                          e.Node.Nodes.Add(tn1);

                          }
                          // knoten expand
                          e.Node.Expand();

                          // List View füllen beginnt mit
                          // dem Leeren des vorhandenen Inhalts
                          listView1.Clear();


                          ColumnHeader ch1 = columnHeader1;
                          usw...

                          listView1.View = View.LargeIcon;
                          usw...


                          // Dateien holen
                          FileInfo[] files = di.GetFiles();

                          // Listview füllen
                          foreach (FileInfo info in files)
                          {
                          ListViewItem item = new ListViewItem();
                          item.Tag = info.FullName;
                          item.Text = info.Name;

                          item.SubItems.Add(info.LastWriteTime.ToString());
                          uns...
                          switch (info.Extension)
                          {
                          case ".txt":
                          item.ImageIndex = 2;
                          break;
                          usw...
                          }

                          listView1.Items.Add(item);
                          }
                          }
                          catch
                          {
                          }
                          [/highlight]
                          So nun hab ich ein Contextmenu bzw ein MenuStrip (beides) in dem es eine Auswahl gibt für neuen Ordner erstellen.
                          [highlight=c#]
                          string ordner = (string)treeView1.SelectedNode.Tag + "\\" + "neuer ordner";

                          //Prüfen ob der Ordner bereits vorhanden ist.
                          if (Directory.Exists(ordner))
                          {
                          MessageBox.Show("Ordner bereits vorhanden");
                          return;
                          }
                          //Ordner erstellen
                          DirectoryInfo di = Directory.CreateDirectory(ordner);
                          MessageBox.Show("Ordner erstellt");
                          [/highlight]


                          Macht er auch... wird allerdings erst angezeigt wenn man aus dem Ordner in dem sich der neue Ordner befindet raus geht und wieder neu rein.
                          So mein Problem: Er soll den Ordner gleich aktualisieren.
                          C# bringt mich noch um den Verstand

                          Comment


                          • #14
                            Naja... ist dann doch logisch. Momentan aktualisiert Du die Unterknoten nur wenn Du einen anwählst.
                            Jetzt musst Du eben an der richtigen Stelle einen neuen Knoten einfügen. Das sollte aber kein Problem darstellen, wenn Du weisst wie man den Baum aufbaut.

                            Comment


                            • #15
                              Das sind doch mal vernünftige Informationen. Deshalb überwinde ich mich und geb dir Hinweise:

                              1. Du benötigst den TreeNode item, wo das neue Verzeichnis eingefügt wird.
                              2. Du verwendest den Code vom Erstellen:
                              Code:
                              TreeNode tn1 = new TreeNode();
                              tn1.Tag = (string)dir.FullName;
                              tn1.Text = dir.Name;
                              item.Nodes.Add(tn1);
                              Das sollte deutlich machen, dass kleine Code-Teile in eigene Methoden ausgelagert werden können. Ich hoffe doch, dass dein "Haupt-Teil" rekursiv arbeitet, oder?

                              Jürgen

                              Comment

                              Working...
                              X