树视图选定的项目

时间:2011-03-18 11:29:54

标签: c# winforms

我的应用程序中有一个动态创建的树节点。当 右键单击 什么节点我想要获取被点击的节点文本。我使用该值对于我的进一步处理。我已尝试使用选定的节点属性,但有时无法正常工作。

提前致谢

代码:

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();
}

1 个答案:

答案 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中)中的选择的原因。如果确实如此,那么多选和控制+选择功能将会中断,最终右键单击特定于上下文的特定操作的特殊含义将会丢失。这就是右键单击不会选择单击节点的原因,这是正确的。上面提供的代码用于启用右键单击选择的特定目的。并考虑用户体验对此类工作的影响或异常行为。