Partager via


Comment : modifier l'apparence d'un contrôle DataRepeater (Visual Studio)

Mise à jour : Juillet 2008

Vous pouvez modifier l'apparence d'un contrôle DataRepeater au moment du design en définissant les propriétés ou au moment de l'exécution en gérant l'événement DrawItem.

Les propriétés que vous définissez au moment du design lorsque la section modèle d'élément du contrôle est sélectionnée sont répétées pour chaque DataRepeaterItem au moment de l'exécution. Les propriétés relatives à l'apparence du contrôle DataRepeater lui-même sont uniquement visibles au moment de l'exécution si une partie du conteneur est laissée à découvert (par exemple, si la valeur de la propriété Padding est une valeur élevée).

Des propriétés liées à l'apparence peuvent être définies en fonction de conditions au moment de l'exécution. Par exemple, dans le cas d'une application de planification, vous pouvez modifier la couleur d'arrière-plan d'un élément afin de prévenir les utilisateurs que la date d'échéance est dépassée. Dans le gestionnaire d'événements DrawItem, si vous définissez une propriété dans une instruction conditionnelle, telle que If…Then, vous devez également utiliser une clause Else pour spécifier l'apparence lorsque la condition n'est pas remplie.

Pour modifier l'apparence au moment du design

  1. Dans le Concepteur Windows Forms, sélectionnez la région (supérieure) du modèle d'élément du contrôle DataRepeater.

  2. Dans la fenêtre Propriétés, sélectionnez une propriété et modifiez sa valeur. Les propriétés communes qui affectent l'apparence sont BackColor, BackgroundImage, BorderStyle et ForeColor.

Pour modifier l'apparence au moment de l'exécution

  1. Dans l'Éditeur de code, sous la liste déroulante Événement, cliquez sur DrawItem.

  2. Dans le gestionnaire d'événements DrawItem, ajoutez le code suivant pour définir les propriétés :

    ' 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;
        }
    }
    

Exemple

Certaines personnalisations courantes du contrôle DataRepeater comprennent l'affichage des lignes dans différentes couleurs et la modification de la couleur d'un champ en fonction d'une condition. L'exemple suivant montre comment effectuer ces personnalisations. Cet exemple suppose qu'il existe un contrôle DataRepeater lié à la table Products de la base de données 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;
    }
}

Notez que pour que ces deux personnalisations, vous devez fournir le code définissant les propriétés des deux côtés de la condition. Si vous ne spécifiez pas la condition Else, vous obtiendrez des résultats inattendus au moment de l'exécution.

Voir aussi

Tâches

Dépannage des problèmes liés au contrôle DataRepeater (Visual Studio)

Comment : afficher des données liées dans un contrôle DataRepeater (Visual Studio)

Comment : afficher des données indépendantes dans un contrôle DataRepeater (Visual Studio)

Comment : afficher des en-têtes d'élément dans un contrôle DataRepeater (Visual Studio)

Concepts

Introduction au contrôle DataRepeater (Visual Studio)

Référence

DataRepeater

DrawItem

Historique des modifications

Date

Historique

Raison

Juillet 2008

Rubrique ajoutée.

Modifications de fonctionnalités dans le SP1.