抓取TreeView所选节点的位置

时间:2012-10-25 12:18:35

标签: c# winforms treeview

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

请帮助。

3 个答案:

答案 0 :(得分:5)

我通过使用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);

欢迎任何其他接近此方法。

答案 1 :(得分:0)

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

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

以下是示例:

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

答案 2 :(得分:0)

我试图在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()

此代码在对话框中显示所选树节点的Right_Bottom侧的位置。

杰夫