左侧是一个树,当点击相应的节点时,弹出相应的功能窗口。现在的问题是:
代码中加了一个类成员变量inittvn,去除了一进入就会弹出第一个功能窗口的问题。但是,又出现了另一个问题。那就是,进入页面后默认选择的节点是第一个节点,再次选择第一个节点根本没有反应。只有当选择了其它节点再回来选择第一个节点时,才会弹出窗口。可不可以把TteeView默认选择节点的属性去掉,开始进入不选择任何节点。
代码如下:bool inittvn = false;//定义类变量,初始化treeview节点,去除初始选择。
private void TreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
           //判断语句,去除TreeView节点的初始选择
            if (!inittvn)
            {
                inittvn = true;
                return;
            }
            if (inittvn)
            {
                switch (Convert.ToInt32(((System.Windows.Forms.TreeView)(sender)).SelectedNode.Tag))
                {
                    case 1:
                        {
                            Yegl yegl = new Yegl();                            if (yegl.ShowDialog(this) == DialogResult.OK)
                            {
                            }
                        }
                        break;
                    case 2:
                        {
                            Hykgl hykgl = new Hykgl();                            if (hykgl.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;                    case 3:
                        {
                            Xfgl xfgl = new Xfgl();                            if (xfgl.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;                    case 4:
                        {
                            Szgl szgl = new Szgl();                            if (szgl.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;                    case 5:
                        {
                            Spgl spgl = new Spgl();                            if (spgl.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;                    case 6:
                        {
                            Yhgl yhgl = new Yhgl();                            if (yhgl.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;
                    case 7:
                        {
                            Jbxx jbxx = new Jbxx();                            if (jbxx.ShowDialog(this) == DialogResult.OK)
                            {                            }
                        }
                        break;                    default: break;
                }
            }
        }

解决方案 »

  1.   

    private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
      {
      if (treeView1.SelectedNode == null) return;
      if (e.Node == treeView1.Nodes[0]) e.Cancel = true;
      }
      

  2.   


    先谢谢您。可是有点不懂啊“TreeViewCancelEventArgs”,这是什么事件?什么思路能麻烦您解释下吗?
      

  3.   

    用NodeMouseClick事件,不要用AfterSelectvoid treeView1_NodeMouseClick(object sender,  
        TreeNodeMouseClickEventArgs e)
    {
        switch (Convert.ToInt32(e.Node.Tag))
        {}
    }
      

  4.   


    public Form1()
            {
                InitializeComponent();
                treeView1.BeforeSelect += new TreeViewCancelEventHandler(treeView1_BeforeSelect);
            }
            
            void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
            {
                if (e.Action == TreeViewAction.Unknown)
                {
                    e.Cancel = true;
                }
            }