首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用treeview,单击treeview节点上的事件

使用treeview,单击treeview节点上的事件
EN

Stack Overflow用户
提问于 2011-03-29 19:27:11
回答 2查看 40.1K关注 0票数 0

当单击treeview的子节点或父节点时,我正在尝试打开表单:

代码语言:javascript
复制
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(); 
              }
    }

}
EN

回答 2

Stack Overflow用户

发布于 2011-03-29 19:58:12

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

代码语言:javascript
复制
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(); 
          }
}
票数 4
EN

Stack Overflow用户

发布于 2011-03-29 20:25:06

这可能有点黑客和滥用标签功能,但你可以这样做:

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5471756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档