TreeNodeStates Перечисление

Определение

Определяет константы, представляющие возможные состояния объекта TreeNode.Defines constants that represent the possible states of a TreeNode.

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

public enum class TreeNodeStates
[System.Flags]
public enum TreeNodeStates
[<System.Flags>]
type TreeNodeStates = 
Public Enum TreeNodeStates
Наследование
TreeNodeStates
Атрибуты

Поля

Checked 8

узел отмечается.The node is checked.

Default 32

узел находится в состоянии по умолчанию.The node is in its default state.

Focused 16

узел имеет фокус.The node has focus.

Grayed 2

узел отключен.The node is disabled.

Hot 64

узел в активном состоянии.The node is hot. Это состояние возникает, когда для свойства HotTracking установлено значение true и указатель мыши находится над узелом.This state occurs when the HotTracking property is set to true and the mouse pointer is over the node.

Indeterminate 256

узел находится в неопределенном состоянии.The node in an indeterminate state.

Marked 128

узел помечается.The node is marked.

Selected 1

узел выбирается.The node is selected.

ShowKeyboardCues 512

узел должен показывать сочетание клавиш.The node should indicate a keyboard shortcut.

Примеры

В следующем примере показано, как настроить TreeView элемент управления с помощью рисования владельцем.The following example demonstrates how to customize a TreeView control using owner drawing. TreeViewЭлемент управления в примере отображает необязательные теги узла рядом с обычными метками узла.The TreeView control in the example displays optional node tags alongside the normal node labels. Теги node указываются с помощью TreeNode.Tag Свойства.Node tags are specified using the TreeNode.Tag property. TreeViewЭлемент управления также использует пользовательские цвета, включая пользовательский цвет выделения.The TreeView control also uses custom colors, including a custom highlight color.

Большую часть цветов можно настроить, TreeView задавая свойства цвета, но цвет выделения выделения недоступен в качестве свойства.You can customize most of the TreeView colors by setting color properties, but the selection highlight color is not available as a property. Кроме того, выделенный по умолчанию прямоугольник выделения расширяется только вокруг метки узла.Additionally, the default selection highlight rectangle extends only around a node label. Для рисования тегов узлов и рисования настраиваемых выделенных прямоугольников, которые достаточно велики для включения тега узла, необходимо использовать рисование владельцем.Owner drawing must be used to draw the node tags and to draw a customized highlight rectangle large enough to include a node tag.

В этом примере обработчик TreeView.DrawNode события рисует невыбранные узлы, вызывая методы DrawTreeNodeEventArgs класса.In the example, a handler for the TreeView.DrawNode event draws unselected nodes by calling methods of the DrawTreeNodeEventArgs class. Эти методы обеспечивают внешний вид по умолчанию для TreeView элементов, которые не требуют настройки.These methods provide the default appearance for TreeView elements that do not need customization. Обработчик рисует Теги узлов и выделение пользовательского выделения вручную.The handler draws the node tags and the custom selection highlight manually.

Полный пример см TreeView.DrawNode . в разделе справки.For the complete example, see the TreeView.DrawNode reference topic.

   // Draws a node.
private:
   void myTreeView_DrawNode( Object^ sender, DrawTreeNodeEventArgs^ e )
   {
      // Draw the background and node text for a selected node.
      if ( (e->State & TreeNodeStates::Selected) != (TreeNodeStates)0 )
      {
         // Draw the background of the selected node. The NodeBounds
         // method makes the highlight rectangle large enough to
         // include the text of a node tag, if one is present.
         e->Graphics->FillRectangle( Brushes::Green, NodeBounds( e->Node ) );

         // Retrieve the node font. If the node font has not been set,
         // use the TreeView font.
         System::Drawing::Font^ nodeFont = e->Node->NodeFont;
         if ( nodeFont == nullptr )
                  nodeFont = (dynamic_cast<TreeView^>(sender))->Font;

         // Draw the node text.
         e->Graphics->DrawString( e->Node->Text, nodeFont, Brushes::White, Rectangle::Inflate( e->Bounds, 2, 0 ) );
      }
      // Use the default background and node text.
      else
      {
         e->DrawDefault = true;
      }

      // If a node tag is present, draw its string representation 
      // to the right of the label text.
      if ( e->Node->Tag != nullptr )
      {
         e->Graphics->DrawString( e->Node->Tag->ToString(), tagFont, Brushes::Yellow, (float)e->Bounds.Right + 2, (float)e->Bounds.Top );
      }

      
      // If the node has focus, draw the focus rectangle large, making
      // it large enough to include the text of the node tag, if present.
      if ( (e->State & TreeNodeStates::Focused) != (TreeNodeStates)0 )
      {
         Pen^ focusPen = gcnew Pen( Color::Black );
         try
         {
            focusPen->DashStyle = System::Drawing::Drawing2D::DashStyle::Dot;
            Rectangle focusBounds = NodeBounds( e->Node );
            focusBounds.Size = System::Drawing::Size( focusBounds.Width - 1, focusBounds.Height - 1 );
            e->Graphics->DrawRectangle( focusPen, focusBounds );
         }
         finally
         {
            if ( focusPen )
               delete safe_cast<IDisposable^>(focusPen);
         }

      }
   }
// Draws a node.
private void myTreeView_DrawNode(
    object sender, DrawTreeNodeEventArgs e)
{
    // Draw the background and node text for a selected node.
    if ((e.State & TreeNodeStates.Selected) != 0)
    {
        // Draw the background of the selected node. The NodeBounds
        // method makes the highlight rectangle large enough to
        // include the text of a node tag, if one is present.
        e.Graphics.FillRectangle(Brushes.Green, NodeBounds(e.Node));

        // Retrieve the node font. If the node font has not been set,
        // use the TreeView font.
        Font nodeFont = e.Node.NodeFont;
        if (nodeFont == null) nodeFont = ((TreeView)sender).Font;

        // Draw the node text.
        e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White,
            Rectangle.Inflate(e.Bounds, 2, 0));
    }

    // Use the default background and node text.
    else 
    {
        e.DrawDefault = true;
    }

    // If a node tag is present, draw its string representation 
    // to the right of the label text.
    if (e.Node.Tag != null)
    {
        e.Graphics.DrawString(e.Node.Tag.ToString(), tagFont,
            Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top);
    }

    // If the node has focus, draw the focus rectangle large, making
    // it large enough to include the text of the node tag, if present.
    if ((e.State & TreeNodeStates.Focused) != 0)
    {
        using (Pen focusPen = new Pen(Color.Black))
        {
            focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            Rectangle focusBounds = NodeBounds(e.Node);
            focusBounds.Size = new Size(focusBounds.Width - 1, 
            focusBounds.Height - 1);
            e.Graphics.DrawRectangle(focusPen, focusBounds);
        }
    }
}
' Draws a node.
Private Sub myTreeView_DrawNode(ByVal sender As Object, _
    ByVal e As DrawTreeNodeEventArgs) Handles myTreeView.DrawNode

    ' Draw the background and node text for a selected node.
    If (e.State And TreeNodeStates.Selected) <> 0 Then

        ' Draw the background of the selected node. The NodeBounds
        ' method makes the highlight rectangle large enough to
        ' include the text of a node tag, if one is present.
        e.Graphics.FillRectangle(Brushes.Green, NodeBounds(e.Node))

        ' Retrieve the node font. If the node font has not been set,
        ' use the TreeView font.
        Dim nodeFont As Font = e.Node.NodeFont
        If nodeFont Is Nothing Then
            nodeFont = CType(sender, TreeView).Font
        End If

        ' Draw the node text.
        e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, _
            e.Bounds.Left - 2, e.Bounds.Top)

    ' Use the default background and node text.
    Else
        e.DrawDefault = True
    End If

    ' If a node tag is present, draw its string representation 
    ' to the right of the label text.
    If (e.Node.Tag IsNot Nothing) Then
        e.Graphics.DrawString(e.Node.Tag.ToString(), tagFont, _
            Brushes.Yellow, e.Bounds.Right + 2, e.Bounds.Top)
    End If

    ' If the node has focus, draw the focus rectangle large, making
    ' it large enough to include the text of the node tag, if present.
    If (e.State And TreeNodeStates.Focused) <> 0 Then
        Dim focusPen As New Pen(Color.Black)
        Try
            focusPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot
            Dim focusBounds As Rectangle = NodeBounds(e.Node)
            focusBounds.Size = New Size(focusBounds.Width - 1, _
                focusBounds.Height - 1)
            e.Graphics.DrawRectangle(focusPen, focusBounds)
        Finally
            focusPen.Dispose()
        End Try
    End If

End Sub

Комментарии

Это перечисление используется State свойством DrawTreeNodeEventArgs класса.This enumeration is used by the State property of the DrawTreeNodeEventArgs class. Дополнительные сведения см. в описании события TreeView.DrawNode.For more information, see the TreeView.DrawNode event.

Применяется к

См. также раздел