C# 将ToolStripMenu分配给多个TreeView节点,并知道按下了哪个节点

C# 将ToolStripMenu分配给多个TreeView节点,并知道按下了哪个节点,c#,click,treeview,toolstripmenu,C#,Click,Treeview,Toolstripmenu,我有一个TreeView对象,我需要它来允许用户从中删除节点,所以我有一个DeleteToolStripMenu,我将它分配给启用删除的节点。 但我想知道哪个节点被按下并触发了delete_toolStripMenuItem_Click事件,而没有使用treeView.SelectedNode属性 有没有办法知道按下的确切节点?这里有一种方法。处理TreeView的MouseDown()事件,并确定使用TreeView.getNodeEat()右键单击了哪个TreeNode。将该树节点存储在表单

我有一个TreeView对象,我需要它来允许用户从中删除节点,所以我有一个DeleteToolStripMenu,我将它分配给启用删除的节点。 但我想知道哪个节点被按下并触发了delete_toolStripMenuItem_Click事件,而没有使用treeView.SelectedNode属性


有没有办法知道按下的确切节点?

这里有一种方法。处理TreeView的MouseDown()事件,并确定使用TreeView.getNodeEat()右键单击了哪个TreeNode。将该树节点存储在表单级别,以便您可以在“删除”菜单处理程序中访问它:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private TreeNode _TN = null;

    private void treeView1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Right)
        {
            _TN = treeView1.GetNodeAt(e.X, e.Y);
        }
    }

    private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
    {
        if (_TN != null)
        {
            MessageBox.Show(_TN.Text);
        }
    }

}