0

我有 TreeView 对象,我需要使用户能够从中删除节点,所以我删除了分配给可以删除的节点的 ToolStripMenu。但我想知道在不使用 treeView.SelectedNode 属性的情况下按下了哪个节点并触发了 delete_toolStripMenuItem_Click 事件。

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

4

1 回答 1

0

这是一种方法。您处理 TreeView 的 MouseDown() 事件并使用 TreeView.GetNodeAt() 确定哪个 TreeNode 被右键单击。将该 TreeNode 存储在 Form 级别,以便您可以在 Delete 菜单处理程序中访问它:

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);
        }
    }

}
于 2014-07-30T15:27:02.097 回答