Cette documentation est archivée et n’est pas conservée.

DrawTreeNodeEventArgs.Node, propriété

Obtient TreeNode à dessiner.

Espace de noms: System.Windows.Forms
Assembly : System.Windows.Forms (dans system.windows.forms.dll)

public TreeNode Node { get; }
/** @property */
public TreeNode get_Node ()

public function get Node () : TreeNode

Non applicable.

Valeur de la propriété

TreeNode à dessiner.

Utilisez cette propriété pour accéder à l'objet TreeNode à dessiner. Cela est utile lorsque la propriété State ne fournit pas d'informations adéquates pour répondre à vos besoins. La propriété State fournit uniquement des informations d'état de base que vous pouvez utiliser, par exemple, pour déterminer si un nœud est sélectionné, activé ou a le focus. La propriété Node, en revanche, vous permet d'accéder à tous les membres de l'objet TreeNode. Vous devez accéder directement au nœud, par exemple, lorsque vous souhaitez déterminer son état de développement.

L'exemple de code suivant montre comment personnaliser un contrôle TreeView à l'aide du mode Owner Draw. Dans cet exemple, le contrôle TreeView affiche les balises de nœud facultatives, ainsi que les étiquettes de nœud standard. Les balises de nœud sont spécifiées à l'aide de la propriété TreeNode.Tag. Le contrôle TreeView utilise également des couleurs personnalisées, y compris une couleur de surbrillance.

Vous pouvez personnaliser la plupart des couleurs de TreeView en définissant des propriétés de couleur, mais la couleur de mise en surbrillance de la sélection n'est pas disponible en tant que propriété. En outre, le rectangle de sélection par défaut s'étend uniquement autour d'une étiquette de nœud. Le dessin owner-drawn doit être utilisé pour dessiner des balises de nœud et un rectangle de sélection personnalisé assez grand pour inclure une balise de nœud.

Dans l'exemple, un gestionnaire pour l'événement TreeView.DrawNode dessine manuellement les balises de nœud et la mise en surbrillance de la sélection. Les nœuds non sélectionnés n'ont pas besoin de personnalisation. Pour ceux-ci, la propriété DrawDefault a la valeur true afin qu'ils soient dessinés par le système d'exploitation.

Pour obtenir l'exemple complet, consultez la rubrique de vue d'ensemble de référence DrawTreeNodeEventArgs.

// 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 void myTreeView_DrawNode(Object sender, DrawTreeNodeEventArgs e)
{
    // Draw the background and node text for a selected node.
    if ((int)(e.get_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.get_Graphics().FillRectangle(Brushes.get_Green(),
            NodeBounds(e.get_Node()));
        // Retrieve the node font. If the node font has not been set,
        // use the TreeView font.
        Font nodeFont = e.get_Node().get_NodeFont();
        if (nodeFont == null) {
            nodeFont = ((TreeView)sender).get_Font();
        }
        // Draw the node text.
        e.get_Graphics().DrawString(e.get_Node().get_Text(),
            nodeFont, Brushes.get_White(),
            RectangleF.op_Implicit(Rectangle.Inflate(e.get_Bounds(), 2, 0)));
    }
    // Use the default background and node text.
    else {
        e.set_DrawDefault(true);
    }
    // If a node tag is present, draw its string representation 
    // to the right of the label text.
    if (e.get_Node().get_Tag() != null) {
        e.get_Graphics().DrawString(e.get_Node().get_Tag().ToString(),
            tagFont, Brushes.get_Yellow(), e.get_Bounds().get_Right() + 2,
            e.get_Bounds().get_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 ((int)(e.get_State() & TreeNodeStates.Focused) != 0) { 
        Pen focusPen = new Pen(Color.get_Black());
        try {
            focusPen.set_DashStyle(System.Drawing.Drawing2D.DashStyle.Dot);
            Rectangle focusBounds = NodeBounds(e.get_Node());
            focusBounds.set_Size(new Size(focusBounds.get_Width() - 1,
                focusBounds.get_Height() - 1));
            e.get_Graphics().DrawRectangle(focusPen, focusBounds);
        }
        finally {
            focusPen.Dispose();
        }            
    }
} //myTreeView_DrawNode

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 est pris en charge sur Windows Vista, Microsoft Windows XP SP2 et Windows Server 2003 SP1.

.NET Framework

Prise en charge dans : 3.0, 2.0
Afficher: