我的应用程序中有一个动态创建的树节点。当 右键单击 什么节点我想要获取被点击的节点文本。我使用该值对于我的进一步处理。我已尝试使用选定的节点属性,但有时无法正常工作。
提前致谢
代码:
public void CmsAppList_RightClicked(object sender, MouseEventArgs e)
{
AddUser _addUser = new AddUser(this.Text); // i want to get that value to this constructor
_addUser.ShowDialog();
}
答案 0 :(得分:5)
这是大多数列表控件的已知问题,要解决此问题,请向treeview的MouseDown
事件添加事件处理程序,并在右键单击时设置所选节点,如下所示。我的树视图名称为treeView1
,只需相应更改。
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
treeView1.SelectedNode = treeView1.GetNodeAt(e.Location);
}
现在,selectednode应始终反映您最后点击的节点。
修改(更正This is known issue
并说This is by design and right
)
我一直在考虑更新这个答案,因为我意识到我所说的这个已知问题在多个列表控件上是错误的。
让我们说它是已知的问题,我们修复它然后右键单击并左键单击具有类似的行为,只是右键单击执行所有操作(左键单击确实),然后打开上下文菜单。这听起来不错,直到我们仔细查看上下文菜单(右键单击)性质,让我们假设您选择了15个文件并且您在第16个文件上单击(左)选项丢失了:)所以您选择了15个文件并右键单击上下文菜单操作适用于所有15个文件。
这就是右键单击不应更改任何视图(在列表框或treeview或explorer widnow中)中的选择的原因。如果确实如此,那么多选和控制+选择功能将会中断,最终右键单击特定于上下文的特定操作的特殊含义将会丢失。这就是右键单击不会选择单击节点的原因,这是正确的。上面提供的代码用于启用右键单击选择的特定目的。并考虑用户体验对此类工作的影响或异常行为。