Winforms Windows窗体树视图节点上下文菜单问题
我有treeview和为每个节点显示的上下文菜单。 一个节点具有所选内容。我现在用鼠标移动到另一个节点,并用鼠标右键单击打开上下文菜单。现在出现了一个问题,即选择仍然在旧的新节点上。Winforms Windows窗体树视图节点上下文菜单问题,winforms,treeview,contextmenu,Winforms,Treeview,Contextmenu,我有treeview和为每个节点显示的上下文菜单。 一个节点具有所选内容。我现在用鼠标移动到另一个节点,并用鼠标右键单击打开上下文菜单。现在出现了一个问题,即选择仍然在旧的新节点上。 如果用户以前没有通过鼠标单击选择来选择节点,如何防止菜单弹出?换句话说,我如何才能实现用户必须先通过普通鼠标单击选择treenode,或者treenode通过鼠标右键单击自动获得选择。上下文菜单有一个事件: 这是一个可取消的活动。换句话说,测试是否有选定的节点,如果没有,则取消事件-它将停止显示菜单。请尝试以下代
如果用户以前没有通过鼠标单击选择来选择节点,如何防止菜单弹出?换句话说,我如何才能实现用户必须先通过普通鼠标单击选择treenode,或者treenode通过鼠标右键单击自动获得选择。上下文菜单有一个事件:
这是一个可取消的活动。换句话说,测试是否有选定的节点,如果没有,则取消事件-它将停止显示菜单。请尝试以下代码,该代码为您提供了树节点的预选
TreeNode treeNodeAtMousePosition = this.treeView1.GetNodeAt(this.treeView1.PointToClient(Control.MousePosition));
TreeNode selectedTreeNode = this.treeView1.SelectedNode;
if (treeNodeAtMousePosition != null)
{
if (treeNodeAtMousePosition != selectedTreeNode)
treeView1.SelectedNode = treeNodeAtMousePosition;
}
我创建了上下文菜单并将其分配给设计器中的TreeView控件。然后我将以下代码添加到表单中
private TreeNode _rightclickedNode;
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
if (e.Button == MouseButtons.Right) {
_rightclickedNode = e.Node;
}
}
private void copyAsPathToolStripMenuItem1_Click(object sender, EventArgs e) {
Clipboard.SetText(_rightclickedNode.FullPath);
}