我有树视图和为每个节点显示的上下文菜单。 一个节点有选择。我现在用鼠标移动到另一个节点,然后用鼠标右键单击打开上下文菜单。现在存在的问题是选择仍在旧的新节点上。 如果用户之前没有通过鼠标单击选择选择节点,如何防止菜单弹出?换句话说,我怎样才能实现用户必须通过正常的鼠标点击选择treenode,或者treenode自动点击鼠标右键选择treenode。
答案 0 :(得分:2)
请尝试以下代码,该代码为您提供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;
}
答案 1 :(得分:1)
上下文菜单中有一个事件:
http://msdn.microsoft.com/en-us/library/ms229721.aspx
这是一个可取消的事件。换句话说,测试你是否有一个选定的节点,如果不这样做就取消该事件 - 它将阻止你的菜单显示。
答案 2 :(得分:0)
我创建了上下文菜单,并将其分配给设计器中的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);
}