Procedura: modificare l'aspetto di un controllo DataRepeater (Visual Studio)
È 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
In Progettazione Windows Form, selezionare l'area del modello di elemento (l'area superiore) del controllo DataRepeater.
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
Nell'elenco a discesa Evento dell'editor di codice, fare clic su DrawItem.
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 queste 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.
e.DataRepeaterItem.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.
e.DataRepeaterItem.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)