树视图选定项目

Ren*_*shi 1 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();
}
Run Code Online (Sandbox Code Playgroud)

San*_*ath 5

这是大多数列表控件的已知问题,要解决此问题,请向treeview的MouseDown事件添加事件处理程序,并在右键单击时设置所选节点,如下所示.我的树视图名称treeView1只是相应更改.

    private void treeView1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
            treeView1.SelectedNode = treeView1.GetNodeAt(e.Location);
    }
Run Code Online (Sandbox Code Playgroud)

现在,selectednode应始终反映您最后点击的节点.

编辑(纠正This is known issue和说This is by design and right)

我一直在考虑更新这个答案,因为我意识到我所说的这个已知问题在多个列表控件上是错误的.

让我们说它是已知的问题,我们修复它然后右键单击并左键单击具有类似的行为,除了右键单击执行所有操作(左键单击确实),然后打开上下文菜单.这听起来不错,直到我们仔细查看上下文菜单(右键单击)性质,让我们假设您选择了15个文件并且您在第16个文件上单击(左)选项丢失了:)所以您选择了15个文件并右键单击上下文菜单操作适用于所有选定的15个文件.

这就是右键单击不应在任何视图中更改选择的原因(在列表框或树视图或资源管理器widnow中).如果确实如此,那么多选和控制+选择功能将会中断,最终右键单击特定于上下文的特定操作的特殊含义将会丢失.这就是右键单击不会选择单击节点的原因,这是正确的.上面提供的代码用于启用右键单击选择的特定目的.并考虑这种工作对用户体验的影响或异常行为.