【发布时间】:2014-03-25 22:55:33
【问题描述】:
当用户右键单击时,我试图在树视图上显示一个弹出菜单 - 允许他们选择上下文相关操作以应用于所选节点。
此时用户必须左键单击节点,然后右键选择。
是否可以右键单击节点选择该节点 - 如果可以,最好的方法是什么。
【问题讨论】:
标签: c# winforms user-interface treeview
当用户右键单击时,我试图在树视图上显示一个弹出菜单 - 允许他们选择上下文相关操作以应用于所选节点。
此时用户必须左键单击节点,然后右键选择。
是否可以右键单击节点选择该节点 - 如果可以,最好的方法是什么。
【问题讨论】:
标签: c# winforms user-interface treeview
左右点击都会触发点击事件并导致选择发生变化。但是,在某些情况下(我还没有费心追查),选择将从右键单击的节点变为最初选择的节点。
为了确保右键改变选择,可以通过MouseDown事件强行改变选择的节点:
treeView.MouseDown += (sender, args) =>
treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y);
正如另一位发帖人所指出的,更好一点是使用NodeMouseClick 事件:
treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
【讨论】:
是的。这是NodeMouseClick事件的处理:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeView1.SelectedNode = e.Node;
}
【讨论】:
然后将上下文菜单条拖到表单上:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
// Display context menu for eg:
ContextMenu1.Show();
}
}
【讨论】: