Entwickler-Ecke

WinForms - TreeView neues Nodes


pupsbär - So 10.06.12 12:01
Titel: TreeView neues Nodes
Hallo,

ich habe ein kleines Problem.
Ich möchte einer TreeView ein neues Nodes hinzufügen. Das funktioniert auch alles.
Aber ich möchte das wenn es ein neuer Knoten ist das dieser gleich auf geht und
dsa man den Namen sofort ändern kann.

Nacheinander klappt das alles wunder bar aber.


Hier mal ein kleies Testprogramm


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                TreeNode node = treeView1.SelectedNode;
                node.Nodes.Add("New node below selected node");
            }
            catch (Exception) { }

        }

        // Alle Knoten öffnen
        private void button2_Click(object sender, EventArgs e)
        {
            treeView1.ExpandAll();            
        }

        // Alle Knoten schließen
        private void button3_Click(object sender, EventArgs e)
        {
            treeView1.CollapseAll();
        }

        // Aktive Node Umbenennen
        private void button4_Click(object sender, EventArgs e)
        {
            treeView1.SelectedNode.Text = "";
            treeView1.LabelEdit = true;
            treeView1.SelectedNode.BeginEdit();
        }

        // Aktive Node Löschen
        private void button5_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Remove(treeView1.SelectedNode);        
        }

        // Anzeige welcher Node aktiv ist
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            label2.Text = treeView1.SelectedNode.Text;
        }



    }
}


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Christian S. - So 10.06.12 12:12

Hallo!

Wenn Du der Add-Methode nicht einen String übergibst, sondern einen vorher erstellten TreeNode, dann kannst Du für diesen TreeNode die BeginEdit-Methode aufrufen.

Grüße,
Christian


pupsbär - So 10.06.12 19:28

Erst mal danke für deine schnelle Antwort.
Wenn ich das so mache wie du schreibst dann kann ich aber nicht die Nodes zur Laufzeit ändern.

Ich hätte evtl. schreiben sollen das es so sein soll das der Benutzer auf in der TreeView nur einen
Startpunkt bekommt und dann per rechts klick weite Punkte hinzufügen kann.

Darum muss ich einen Punkt erstell und dann gleich ändern.


Grüße
Michael


Christian S. - So 10.06.12 21:40

Das machst Du genau so, wie ich es geschrieben habe :nixweiss:

Einen Node erstellst Du per

C#-Quelltext
1:
var newNode = new TreeNode("Ein neuer Knoten");                    


pupsbär - So 24.06.12 17:38

Danke

Ich habe es geschafft.



Quelltext
1:
2:
3:
                treeView1.SelectedNode = newNode;
                treeView1.LabelEdit = true;
                treeView1.SelectedNode.BeginEdit();