0

我有两个树视图和一个带有添加节点功能的 contexmenucontainer cmnuAddNode 是我的 contexmenuestrip 的添加选项卡我是一个处理事件的新手

如果单击,我想将节点添加到树视图 1,如果单击,则将节点添加到树视图 2 我只想知道我应该在 if 条件中写什么,我的代码如下:

 private void cmnuAddNode_Click(object sender, EventArgs e)
    {

        NewNode n = new NewNode();
        n.ShowDialog();
        TreeNode nod = new TreeNode();
        nod.Name = n.NewNodeName.ToString();
        nod.Text = n.NewNodeText.ToString();

        n.Close();
      if (treeView1.SelectedNode!=null)
        {
            treeView1.SelectedNode.Nodes.Add(nod);
            treeView1.SelectedNode.ExpandAll();
        }
        if (treeView2.SelectedNode!= null)
        {
            treeView2.SelectedNode.Nodes.Add(nod);
            treeView2.SelectedNode.ExpandAll();
        }
          }

当我单击 treeview2 时,此代码有异常

4

3 回答 3

1
private void cmnuAddNode_Click(object sender, EventArgs e,TreeViewEventArgs e1)
{

    NewNode n = new NewNode();
    n.ShowDialog();
    TreeNode nod = new TreeNode();
    nod.Name = n.NewNodeName.ToString();
    nod.Text = n.NewNodeText.ToString();

    n.Close();
    if(e1.Node.TreeView == treeView1)
   {
    treeView1.SelectedNode.Nodes.Add(nod);
    treeView1.SelectedNode.ExpandAll();
    }
     if(e1.Node.TreeView == treeView2)
   {
    treeView2.SelectedNode.Nodes.Add(nod);
    treeView2.SelectedNode.ExpandAll();
     }
}
于 2012-08-18T05:24:27.987 回答
0

简单我得到了我的树视图的索引,当它进入treeview1时,在它的鼠标点击事件中我将它设置为1,当进入2时我将它设置为2,所以在我的函数中我写了条件,这很简单,快速和容易

private void cmnuAddNode_Click(object sender, EventArgs e)
    {

        NewNode n = new NewNode();
        n.ShowDialog();
        TreeNode nod = new TreeNode();
        nod.Name = n.NewNodeName.ToString();
        nod.Text = n.NewNodeText.ToString();

        n.Close();

        if (treeviewindex== 1)
        {
            treeView1.SelectedNode.Nodes.Add(nod);
            treeView1.SelectedNode.ExpandAll();

        }
        if (treeviewindex==2)
        {
            treeView2.SelectedNode.Nodes.Add(nod);
            treeView2.SelectedNode.ExpandAll();
        }
        if (treeviewindex == 3)
        {
            treeView3.SelectedNode.Nodes.Add(nod);
            treeView3.SelectedNode.ExpandAll();
        }
    }
于 2012-08-19T09:16:02.890 回答
0

首先为每个 TreeView 添加鼠标单击事件,其次使用 MouseEventArgs 选择正确的节点。对于treeview1(对treeview2做同样的事情)

    void treeView1MouseUp(object sender, MouseEventArgs e)
    {
        if(e.Button == MouseButtons.Right)
        {
            // Select the clicked node
            treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);

            if(treeView1.SelectedNode != null)
            {
             cmnuAddNode.Show(treeView1, e.Location);
            }
        }
    }

//it will work for the two treeview getting Parent control of cmnuAddNode
private void cmnuAddNode_Click(object sender, EventArgs e,TreeViewEventArgs e1)
    {
        TreeView yourtreeView = (TreeView)cmnuAddNode.Parent;
        NewNode n = new NewNode();
        n.ShowDialog();
        TreeNode nod = new TreeNode();
        nod.Name = n.NewNodeName.ToString();
        nod.Text = n.NewNodeText.ToString();

        n.Close();

        yourtreeView.SelectedNode.Nodes.Add(nod);
        yourtreeView.SelectedNode.ExpandAll();

    }
于 2012-08-18T04:38:17.343 回答