DrawTreeNodeEventArgs.DrawDefault Proprietà

Definizione

Ottiene o imposta un valore che indica se l'oggetto TreeNode deve essere creato automaticamente invece che dal proprietario.

public bool DrawDefault { get; set; }

Valore della proprietà

true se il nodo deve essere creato automaticamente; false se il nodo deve essere creato nel gestore eventi. Il valore predefinito è false.

Esempio

Nell'esempio di codice seguente viene illustrato l'uso di questa proprietà. Nell'esempio un gestore per l'evento TreeView.DrawNode disegna manualmente il tag del nodo e un colore di evidenziazione personalizzato per il nodo selezionato. I nodi non selezionati non richiedono la personalizzazione. Per i nodi non selezionati, la DrawDefault proprietà è impostata su true in modo che vengano disegnate dal sistema operativo e non avrà un aspetto personalizzato.

Nota

Se si disegna un nodo manualmente e si imposta anche la DrawDefault proprietà su true, alcuni o tutti gli elementi di disegno potrebbero essere sovrascritti dal sistema operativo.

Per l'esempio completo, vedere l'argomento di DrawTreeNodeEventArgs riferimento di panoramica.

// 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);
        }
    }
}

Commenti

Impostare questa proprietà su true per i nodi che non si desidera personalizzare quando si gestisce l'evento DrawNode . Ad esempio, ciò è utile quando si desidera personalizzare solo i nodi che si trovano in uno stato specifico.

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9