Переключение позиций StateImage и IndexImage для TreeNode в элементе управления Winforms TreeView - PullRequest
1 голос
/ 18 января 2012

Я хотел бы знать, возможно ли переключить позицию StateImage с помощью IndexImage для TreeNode в Winforms TreeView?

Пожалуйста, обратитесь к изображению ниже для иллюстрации.

A TreeNode with a StateImage and the bottom TreeNode without a StateImage

Первый TreeNode имеет stateImage, а второй - нет.

Моя цель - чтобы все IndexImage были выровнены по левому краю, а StateImage (если есть) - справа от IndexImage.

Полученное дерево будет выглядеть примерно так:

resulting tree with IndexImages aligned left

Я думаю, мне нужно установить дерево DrawMode в OwnerDraw и переопределить OnPaint. Я прочитал эту ссылку MSDN, но там ничего не было сказано о рисовании изображений. Я действительно не знаю, как поступить. Будем очень благодарны за любую помощь и код, который вы можете предоставить (на C # или VB.net).

Большое спасибо

1 Ответ

1 голос
/ 18 января 2012

Да, для этого потребуется пользовательский рисунок.

TreeView1.DrawMode = TreeViewDrawMode.OwnerDrawAll

Затем вам нужно обработать событие DrawNode.См. Событие TreeView.DrawNode

Параметр DrawTreeNodeEventArgs в событии DrawNode содержит графический объект, который можно использовать для рисования чего угодно, от изображений до текста.

Конечно, как только вы пойдете на заказ, вы несете ответственность за рисование всего (к сожалению).См. VisualStyles относительно получения правильных глифов TreeView.

Простая иллюстрация:

Private Sub TreeView1_DrawNode(ByVal sender As Object, ByVal e As DrawTreeNodeEventArgs) Handles TreeView1.DrawNode
  Dim nodeLeft As Integer = (e.Node.Level * 16) + 16
  e.Graphics.DrawImage(ImageOne, nodeLeft, e.Bounds.Top)
  e.Graphics.DrawImage(ImageTwo, nodeLeft + 16, e.Bounds.Top)
  e.Graphics.DrawString(e.Node.Text, Me.Font, Brushes.Black, nodeLeft + 32, e.Bounds.Top)
End Sub

В этом примере отсутствует код для рисования элементов управления деревом и состояния выбора,но он показывает два изображения и текст узла.Пользовательский рисунок TreeViews много работы.

...