Gewusst wie: Ändern der Darstellung eines DataRepeater-Steuerelements (Visual Studio)

Sie können die Darstellung eines DataRepeater-Steuerelements zur Entwurfszeit ändern, indem Sie Eigenschaften festlegen. Für eine Änderung während der Laufzeit muss das DrawItem-Ereignis verarbeitet werden.

Eigenschaften, die Sie während der Entwurfszeit bei Auswahl des Abschnitts für die Elementvorlage im Steuerelement festlegen, werden während der Laufzeit für jedes DataRepeaterItem wiederholt. Darstellungsbezogene Einstellungen des DataRepeater-Steuerelements selbst werden während der Laufzeit nur angezeigt, wenn der Container zumindest teilweise nicht überdeckt wurde (z. B. wenn für die Eigenschaft Padding ein hoher Wert festgelegt wurde).

Zur Laufzeit können darstellungsbezogene Eigenschaften basierend auf Bedingungen festgelegt werden. In einer Planungsanwendung können Sie z. B. die Hintergrundfarbe eines Elements ändern, um Benutzer darauf aufmerksam zu machen, dass der Fälligkeitstermin des Elements verstrichen ist. Wenn Sie im DrawItemEreignishandler eine Eigenschaft in einer Bedingungsanweisung wie If…Then festlegen, müssen Sie mit einer Else-Klausel die Darstellung angeben, die verwendet wird, wenn die Bedingung nicht erfüllt wird.

So ändern Sie zur Entwurfszeit die Darstellung

  1. Wählen Sie im Windows Forms-Designer den Elementvorlagenbereich (oben) des DataRepeater-Steuerelements aus.

  2. Wählen Sie im Eigenschaftenfenster eine Eigenschaft aus, und ändern Sie den Wert. Folgende allgemeine Eigenschaften wirken sich auf die Darstellung aus: BackColor, BackgroundImage, BorderStyle und ForeColor.

So ändern Sie zur Laufzeit die Darstellung

  1. Klicken Sie im Code-Editor in der Ereignis-Dropdownliste auf DrawItem.

  2. Fügen Sie im DrawItem-Ereignishandler Code hinzu, um die Eigenschaften festzulegen:

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

Beispiel

Zu den häufigsten Anpassungen für das DataRepeater-Steuerelement gehören die Anzeige der Zeilen in unterschiedlichen Farben und die Änderung der Farbe eines Felds auf Basis einer Bedingung. Das folgende Beispiel veranschaulicht, wie diese Anpassungen vorgenommen werden. In diesem Beispiel wird davon ausgegangen, dass Sie über ein DataRepeater-Steuerelement verfügen, das an die Products-Tabelle in der Datenbank Northwind gebunden ist.

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

Beachten Sie, dass Sie für beide Anpassungen Code angeben müssen, um die Eigenschaften für beide Seiten der Bedingung festzulegen. Wenn Sie die Else-Bedingung nicht angeben, erhalten Sie zur Laufzeit unerwartete Ergebnisse.

Siehe auch

Aufgaben

Problembehandlung beim DataRepeater-Steuerelement (Visual Studio)

Gewusst wie: Anzeigen von gebundenen Daten in einem DataRepeater-Steuerelement (Visual Studio)

Gewusst wie: Anzeigen von nicht gebundenen Steuerelementen in einem DataRepeater-Steuerelement (Visual Studio)

Gewusst wie: Anzeigen von Elementheadern in einem DataRepeater-Steuerelement (Visual Studio)

Referenz

DataRepeater

DrawItem

Konzepte

Einführung in das DataRepeater-Steuerelement (Visual Studio)