Condividi tramite


Procedura: modificare l'aspetto di un controllo DataRepeater (Visual Studio)

Aggiornamento: Luglio 2008

È possibile modificare l'aspetto dei controlli DataRepeater in fase di progettazione mediante l'impostazione di specifiche proprietà oppure in fase di esecuzione mediante la gestione dell'evento DrawItem.

Le proprietà impostate in fase di progettazione quando viene selezionata l'area del modello di elemento del controllo verranno ripetute in fase di esecuzione per ogni DataRepeaterItem. Le proprietà correlate all'aspetto del controllo DataRepeater stesso saranno visibili in fase di esecuzione soltanto se una parte del contenitore viene lasciata scoperta (ad esempio, se la proprietà Padding è impostata su un valore elevato).

In fase di esecuzione, le proprietà correlate all'aspetto possono essere impostate in base a condizioni. Ad esempio, in un'applicazione di pianificazione, è possibile modificare il colore di sfondo di un elemento per avvisare gli utenti quando un elemento è scaduto. Nel gestore eventi DrawItem, se si imposta una proprietà in un'istruzione condizionale, ad esempio If…Then, è necessario utilizzare anche una clausola Else per specificare l'aspetto quando la condizione non viene soddisfatta.

Per modificare l'aspetto in fase di progettazione

  1. In Progettazione Windows Form, selezionare l'area del modello di elemento (l'area superiore) del controllo DataRepeater.

  2. Nella finestra Proprietà, selezionare una proprietà e modificarne il valore. Tra le proprietà comuni che influiscono sull'aspetto sono incluse le proprietà BackColor, BackgroundImage, BorderStyle e ForeColor.

Per modificare l'aspetto in fase di esecuzione

  1. Nell'elenco a discesa Evento dell'editor di codice, fare clic su DrawItem.

  2. Nel gestore eventi DrawItem, aggiungere codice per impostare le proprietà:

    ' Set the default BackColor.
    e.DataRepeaterItem.BackColor = Color.White
    ' Loop through the controls on the DataRepeaterItem.
    For Each c As Control In e.DataRepeaterItem.Controls
        ' Check the type of each control.
        If TypeOf c Is TextBox Then
            ' If a TextBox, change the BackColor.
            c.BackColor = Color.AliceBlue
        Else
            ' Otherwise use the default BackColor.
            c.BackColor = e.DataRepeaterItem.BackColor
        End If
    Next
    
    // Set the default BackColor.
    e.DataRepeaterItem.BackColor = Color.White;
    // Loop through the controls on the DataRepeaterItem.
    foreach (Control c in e.DataRepeaterItem.Controls)
    {
        // Check the type of each control.
        if (c is TextBox)
        // If a TextBox, change the BackColor.
        {
            c.BackColor = Color.AliceBlue;
        }
        else
        {
            // Otherwise use the default BackColor.
            c.BackColor = e.DataRepeaterItem.BackColor;
        }
    }
    

Esempio

Alcune personalizzazioni comuni per il controllo DataRepeater includono la visualizzazione delle righe in colori alternati e la modifica del colore di un campo in base a una condizione. Nell'esempio riportato di seguito viene mostrato come eseguire tali personalizzazioni. In questo esempio si suppone di disporre di un controllo DataRepeater associato alla tabella Products nel database Northwind.

Private Sub DataRepeater1_DrawItem(ByVal sender As Object, ByVal e _
 As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) _
 Handles DataRepeater1.DrawItem
    ' Alternate the back color.
    If (e.DataRepeaterItem.ItemIndex Mod 2) <> 0 Then
        ' Apply the secondary back color.
        e.DataRepeaterItem.BackColor = Color.AliceBlue
    Else
        ' Apply the default back color.
        DataRepeater1.ItemTemplate.BackColor = Color.White
    End If
    ' Change the color of out-of-stock items to red.
    If e.DataRepeaterItem.Controls(UnitsInStockTextBox.Name).Text _
     < 1 Then
        e.DataRepeaterItem.Controls(UnitsInStockTextBox.Name). _
         BackColor = Color.Red
    Else
        e.DataRepeaterItem.Controls(UnitsInStockTextBox.Name). _
         BackColor = Color.White
    End If
End Sub
private void dataRepeater1_DrawItem(object sender, 
    Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
    // Alternate the back color.
    if ((e.DataRepeaterItem.ItemIndex % 2) != 0)
    // Apply the secondary back color.
    {
        e.DataRepeaterItem.BackColor = Color.AliceBlue;
    }
    else
    {
        // Apply the default back color.
        dataRepeater1.ItemTemplate.BackColor = Color.White;
    }
    // Change the color of out-of-stock items to red.
    if (e.DataRepeaterItem.Controls["unitsInStockTextBox"].Text == "0")
    {
        e.DataRepeaterItem.Controls["unitsInStockTextBox"].BackColor = Color.Red;
    }
    else
    {
        e.DataRepeaterItem.Controls["unitsInStockTextBox"].BackColor = Color.White;
    }
}

Si noti che, per entrambe le personalizzazioni, è necessario fornire codice per impostare le proprietà per entrambi i lati della condizione. Se non si specifica la condizione Else, in fase di esecuzione si potranno avere risultati inattesi.

Vedere anche

Attività

Risoluzione dei problemi relativi al controllo DataRepeater (Visual Studio)

Procedura: visualizzare i dati associati in un controllo DataRepeater (Visual Studio)

Procedura: visualizzare i dati non associati in un controllo DataRepeater (Visual Studio)

Procedura: visualizzare le intestazioni degli elementi in un controllo DataRepeater (Visual Studio)

Concetti

Introduzione al controllo DataRepeater (Visual Studio)

Riferimenti

DataRepeater

DrawItem

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2008

Aggiunto argomento.

Modifica di funzionalità in SP1.