抓取TreeView所选节点的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抓取TreeView所选节点的位置相关的知识,希望对你有一定的参考价值。

这是一个理论问题,所以没有代码(对不起)。我想在用户选择特定节点时捕获TreeView控件的所选节点的位置(X和Y值)。我浏览了intellisense但没有像“Location”或“Position”这样的标签。怎么做到这一点?实际上我正在尝试在所选节点旁边添加动态按钮和textBox,所以我需要节点的位置。

请帮忙。

答案

我通过使用TreeView.SelectedNode.Bounds.X(对于X位置)和TreeView.SelectedNode.Bounds.Y(对于Y位置)并在面板中保留那些动态控件来解决这个问题。

  int DistanceFromNode = 250;
  MyPanel.SetBounds(MyTreeview.SelectedNode.Bounds.X + DistanceFromNode,
        MyTreeview.SelectedNode.Bounds.Y, MyPanel.Width, MyPanel.Height);

欢迎任何其他方法来接近这一点。

另一答案

当用户滚动树视图时,该位置将改变,IMO而不是在所选节点的位置绘制,最好在DrawNode事件中自定义树节点的外观。

在那种情况下,您可以检查是否已选择节点,然后绘制其他按钮,这样您的按钮将与其余的树视图一起滚动。

这是一个例子:

http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.drawnode.aspx

另一答案

我试图在TreeView控件的SelectedNode旁边显示一个Dialog。我解决了这个问题如下:

int x = myTreeView.SelectedNode.Bounds.X + myTreeView.SelectedNode.Bounds.Width;  
int y = myTreeView.SelectedNode.Bounds.Y + myTreeView.SelectedNode.Bounds.Height;  
Point point = new Point(x,y);   
Point absPoint = myTreeView.PointToScreen(point);

MyDialog dialog = new MyDialog();
dialog.StartPosition = FormStartPosition.Manual;
dialog.Location = absPoint;
dialog.show()

此代码显示Dialog所选树节点的Right_Bottom侧的位置。

杰夫

以上是关于抓取TreeView所选节点的位置的主要内容,如果未能解决你的问题,请参考以下文章

如何在树视图中获取子位置?

如何将treeview的内容写入文本文件

使用WPF在虚拟化TreeView中选择节点

WPF TreeView 泄漏所选项目

WPF中的TreeView,如何改变子节点的顺序, 给个例子,多谢

wpf treeview 数据绑定 递归绑定节点