0

2つのツリービューとノード追加関数を備えたcontexmenucontainerがありますcmnuAddNodeはcontexmenuestripの追加タブです私はイベントを扱う初心者です

クリックした場合はノードをtreeview1に追加し、クリックした場合はノードをtreeview2に追加したい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

まず、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 に答える
0

シンプルツリービューのインデックスを取得しました。treeview1にマウスクリックしたときに1に設定し、2に設定すると2に設定したので、関数addで条件を記述しました。これはシンプルで高速かつ簡単です。

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 に答える