Вы можете получить координаты любого узла с помощью метода GetDisplayRect
. Кроме того, InvalidateNode
сообщит вам координаты узла, который вы только что сделали недействительным.
Для ваших целей, я не думаю, что вам нужно знать координаты любого произвольного узла. Вместо этого вам нужно знать, когда вы рисуете узел, является ли этот узел горячим. Все специфичные для узла события рисования владельца сообщают вам как текущий узел, так и координаты, за исключением OnPaintText
, который только сообщает вам об узле. Тем не менее, нет необходимости отслеживать текущий горячий узел самостоятельно. Просто проверьте, можно ли Node = Sender.HotNode
определить, какой стиль использовать для рисования узла и его текста.
Возможно, вам удастся избежать всей проблемы. В элементе управления уже имеется достаточное количество кода, специфичного для горячих узлов, поэтому может потребоваться найти свойства, которые нужно настроить, вместо того, чтобы рисовать все самостоятельно.