我有 TreeView 对象,我需要使用户能够从中删除节点,所以我删除了分配给可以删除的节点的 ToolStripMenu。但我想知道在不使用 treeView.SelectedNode 属性的情况下按下了哪个节点并触发了 delete_toolStripMenuItem_Click 事件。
有没有办法知道按下的确切节点?
我有 TreeView 对象,我需要使用户能够从中删除节点,所以我删除了分配给可以删除的节点的 ToolStripMenu。但我想知道在不使用 treeView.SelectedNode 属性的情况下按下了哪个节点并触发了 delete_toolStripMenuItem_Click 事件。
有没有办法知道按下的确切节点?
这是一种方法。您处理 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);
}
}
}