我试图在用户右键单击时在我的树视图中显示一个弹出菜单 - 允许他们选择要应用于所选节点的上下文敏感操作。
用户必须左键单击节点然后右键单击以选择。
是否可以在节点上右键单击选择该节点 - 如果是,那么执行此操作的最佳方法是什么。
答案 0 :(得分:50)
左键和右键单击都会触发单击事件并导致选择更改。但是,在某些情况下(我还没有打算追查),选择将从右键单击的节点更改为最初选择的节点。
为了确保右键单击更改选择,您可以使用MouseDown
事件强制更改所选节点:
treeView.MouseDown += (sender, args) =>
treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y);
正如其他海报所指出的那样,更好一点是使用NodeMouseClick
事件:
treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
答案 1 :(得分:16)
是肯定的。以下是NodeMouseClick
事件的处理:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeView1.SelectedNode = e.Node;
}
答案 2 :(得分:5)
将上下文菜单条拖到表单上:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// Display context menu for eg:
ContextMenu1.Show();
}
}