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