TreeNodeStates Enum

Definitie

Definieert constanten die de mogelijke toestanden van een TreeNode.

Deze opsomming ondersteunt een bitsgewijze combinatie van de waarden van de leden.

public enum class TreeNodeStates
[System.Flags]
public enum TreeNodeStates
[<System.Flags>]
type TreeNodeStates = 
Public Enum TreeNodeStates
Overname
TreeNodeStates
Kenmerken

Velden

Name Waarde Description
Selected 1

Het knooppunt is geselecteerd.

Grayed 2

Het knooppunt is uitgeschakeld.

Checked 8

Het knooppunt is ingeschakeld.

Focused 16

Het knooppunt heeft de focus.

Default 32

Het knooppunt heeft de standaardstatus.

Hot 64

Het knooppunt is dynamisch. Deze status treedt op wanneer de HotTracking eigenschap is ingesteld true op en de muis aanwijzer zich boven het knooppunt bevindt.

Marked 128

Het knooppunt is gemarkeerd.

Indeterminate 256

Het knooppunt met een onbepaalde status.

ShowKeyboardCues 512

Het knooppunt moet een sneltoets aangeven.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een TreeView besturingselement aanpast met behulp van een eigenaartekening. In TreeView het besturingselement in het voorbeeld worden optionele knooppunttags weergegeven naast de normale knooppuntlabels. Knooppunttags worden opgegeven met behulp van de TreeNode.Tag eigenschap. Het TreeView besturingselement maakt ook gebruik van aangepaste kleuren, waaronder een aangepaste markeringskleur.

U kunt de TreeView meeste kleuren aanpassen door kleureigenschappen in te stellen, maar de kleur van de selectiemarkering is niet beschikbaar als eigenschap. Bovendien wordt de standaardrechthoek met selectiemarkeringen alleen rond een knooppuntlabel uitgebreid. Eigenaartekening moet worden gebruikt om de knooppunttags te tekenen en om een aangepaste markeringsrechthoek te tekenen die groot genoeg is om een knooppunttag op te nemen.

In het voorbeeld tekent een handler voor de TreeView.DrawNode gebeurtenis niet-geselecteerde knooppunten door methoden van de DrawTreeNodeEventArgs klasse aan te roepen. Deze methoden bieden de standaardweergave voor TreeView elementen die geen aanpassing nodig hebben. De handler tekent de knooppunttags en de aangepaste selectiemarkering handmatig.

Zie het naslagonderwerp voor het TreeView.DrawNode volledige voorbeeld.

   // 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

Opmerkingen

Deze opsomming wordt gebruikt door de State eigenschap van de DrawTreeNodeEventArgs klasse. Zie de TreeView.DrawNode gebeurtenis voor meer informatie.

Van toepassing op

Zie ook