2013-08-03 6 views
1

Я хочу изменить цвет выбранного элемента в treeview, даже если выбранный элемент не сфокусирован. Для этого я использую DrawoNode. Но мое событие DrawNode не срабатывает. В чем может быть проблема? Вот мой код:событие treeview DrawNode не стреляет

SolidBrush greenBrush = new SolidBrush(Color.Green); 
    SolidBrush redBrush = new SolidBrush(Color.Red); 

    private void tvVouchers_DrawNode(object sender, DrawTreeNodeEventArgs e) 
    { 
     if (e.Node.IsSelected) 
     { 
      if (tvVouchers.Focused) 
       e.Graphics.FillRectangle(greenBrush, e.Bounds); 
      else 
       e.Graphics.FillRectangle(redBrush, e.Bounds); 
     } 
     else 
      e.Graphics.FillRectangle(Brushes.White, e.Bounds); 

     e.Graphics.DrawRectangle(SystemPens.Control, e.Bounds); 

     TextRenderer.DrawText(e.Graphics, 
           e.Node.Text, 
           e.Node.TreeView.Font, 
           e.Node.Bounds, 
           e.Node.ForeColor); 
    } 

ответ

5

Убедитесь, что свойство DrawNode устанавливается в OwnerDrawText или OwnerDrawAll, то событие будет срабатывать.

OnwerDrawText: «Область меток TreeNode может быть настроена. Все остальные элементы TreeNode создаются автоматически. ' OwnerDrawAll: «Внешний вид всего TreeNode можно настроить. Значки, флажки, знаки плюс и минус, а линии, соединяющие узлы, должны быть нарисованы вручную, если они желательны. '

+0

спасибо. Свойству DrawNode было установлено значение Normal. Большое спасибо. –

Смежные вопросы