C# 如何确定两次鼠标单击TreeView之间的间隔

C# 如何确定两次鼠标单击TreeView之间的间隔,c#,events,treeview,C#,Events,Treeview,我有两个TreeView和一个contexmenucontainer,带有添加节点函数 cmnuAddNode是我的contexmenuestrip的添加选项卡 我是一个处理事件的新手 如果单击,我想将节点添加到treeview 1 并在单击时将节点添加到TreeView 2中 我只是想知道在我的if状态下我应该写些什么 我的代码如下: private void cmnuAddNode_Click(object sender, EventArgs e) { NewNo

我有两个TreeView和一个contexmenucontainer,带有添加节点函数 cmnuAddNode是我的contexmenuestrip的添加选项卡 我是一个处理事件的新手

如果单击,我想将节点添加到treeview 1 并在单击时将节点添加到TreeView 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();
        }
          }

当我首先为每个树视图添加鼠标单击事件时,此代码出现异常
    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();

    }
其次,使用MouseEventArgs选择正确的节点。 对于treeview1(对treeview2执行相同操作)


很简单,当我的TreeView进入TreeView时,我得到了一个索引。当鼠标点击它时,我将其设置为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();
        }
    }

您没有考虑我的上下文容器(TreVIEW)CMNADADNODE.父;为什么?我无法理解,也无法理解为什么我不能只写一行来代替它?因为它允许你在显示contextmenu的地方获取控件,所以如果它来自TreeView,contextmenu的父控件就是TreeView。如果contextmenu是从TreeView显示的,父控件就是TreeView(它解释了工作上下文)它应该有一个真正的代码来知道是否点击了一些东西,然后做一些事情我有一个事件点击,我为我的树状视图写的,我不喜欢改变整个。鼠标向上时,我应该清除我的树状视图点击CMNUADD没有显示,类似contextMenuStrip1.SetBounds(MousePosition.X,MousePosition.Y,23);你知道为什么吗?treeview将获得父项这就是我所说的contextmenu必须知道的是父项的上下文。contextmenu如何从良好的treeview发送treeview事件尝试您将获得的第一个解决方案如果(e1.Node==treeview w1.SelectedNode)这一个不起作用,您下面的代码也不正确,因为cmnuAddNode没有父项。它是上下文菜单,有父项,我已更正和测试,再次没有结果。我知道它是用于上下文菜单,当我建议尝试它时,它当然是带有contextmenustrip的,它不能有输入树eviewEventArgs e1,因为这样它就不应该是addclick事件的函数事件
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();
        }
    }