2011-03-29 86 views
-1

我想点击一个TreeView的子节点或父节点时打开一个表格:使用树状,点击树状节点事件

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

    TreeNode head = new TreeNode("HEAD"); 

    TreeNode member = new TreeNode("MEMBER "); 

    TreeNode submember = new TreeNode("SUB-MEMBER"); 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     head.Nodes.Add(member); 
     member.Nodes.Add(submember); 

     treeView1.Nodes.Add(head); 
     treeView1.AfterSelect += new TreeViewEventHandler(treeView1_AfterSelect); 

    } 

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
      if (treeView1.SelectedNode == member) 
       { 
        MemberForm mf = new MemberForm(); 
        mf.ShowDialog(); 
       } 

      if (treeView1.SelectedNode == head) 
       { 
        HeadForm hf = new HeadForm(); 
        hf.ShowDialog(); 
       } 

      if (treeView1.SelectedNode == submember) 
       { 
        SubMemberForm sf = new SubMemberForm(); //is this way of checking that which node is clicked efficient??? 
        sf.ShowDialog(); 
       } 
    } 

} 
+1

是的,这是完全有效的。你只是比较对象引用。 – Blorgbeard 2011-03-29 11:29:07

+1

这是什么问题? – 2011-03-29 11:38:41

+0

尝试通过编写这个if(Treeview1.selectednode.text ==“Your Required Node”) – Dotnet 2011-03-29 12:05:35

回答

4

只要你只有三个在树状节点,这可能是有效的。但是,这会要求您为每个添加的新节点编写额外的if语句。如果您尝试区分节点深度,则最好使用Level属性。

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
     if (treeView1.SelectedNode.Level == 0) 
      { 
       HeadForm hf = new HeadForm(); 
       hf.ShowDialog(); 
      } 
     else if (treeView1.SelectedNode.Level == 1) 
      { 
       MemberForm mf = new MemberForm(); 
       mf.ShowDialog(); 
      } 

     else if (treeView1.SelectedNode.Level == 2) 
      { 
       SubMemberForm sf = new SubMemberForm(); 
       sf.ShowDialog(); 
      } 
} 
0

这可能是轻微的hackish和滥用的标签功能,但你可以做这样的事情:

TreeNode Head = new TreeNode("Head"); 
Head.Tag = typeof(HeadForm); 

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    Form toOpen = Activator.CreateInstance((Type)treeView1.SelectedNode.Tag) as Form; 

    if(toOpen != null) 
    toOpen.ShowDialog(); 
}