Sdílet prostřednictvím


Postupy: Jak změnit vzhled ovládacího prvku DataRepeater (Visual Studio)

Můžete změnit vzhled ovládacího prvku DataRepeater v době návrhu nastavením vlastností nebo za běhu zpracování události DrawItem.

Vlastnosti, které při návrhu nastavíte v čase kdy je vybrána sekce šablony prvků v ovládacím prvku, se budou opakovat pro každý DataRepeaterItem v době běhu aplikace. Vlastnosti týkající se vzhledu samotného ovládacího prvku DataRepeater se zobrazí v době běhu, pouze pokud je část kontejneru ponechána nezakrytá (například pokud je vlastnost Padding nastavena na velkou hodnotu).

V době běhu je možné nastavit vlastnosti týkající se vzhledu v závislosti na podmínkách. Například v plánovací aplikaci, můžete chtít změnit barvu pozadí položky a tímto varovat uživatele, že je položka po splatnosti. Pokud nastavíte vlastnost v podmíněném příkazu v obslužné rutině události DrawItem jako například If…Then, musíte použít také klauzuli Else, které určuje vzhled při nesplnění podmínky.

Chcete-li změnit vzhled v době návrhu

  1. V návrháři modelu Windows Forms, označte šablonu položky v horní části ovládacího prvku DataRepeater.

  2. V okně Vlastnosti, označte a změňte hodnotu. Společné vlastnosti, které ovlivňují vzhled zahrnují BackColor, BackgroundImage, BorderStyle a ForeColor.

Chcete-li změnit vzhled za běhu

  1. V rozevíracím seznamu událostí rditoru kódu, klikněte na tlačítko DrawItem.

  2. V obslužné rutině události DrawItem přidejte kód, který nastaví vlastnosti:

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

Příklad

Některé běžné úpravy pro ovládací prvek DataRepeater obsahují zobrazení řádků se střídavými barvami a změnu barvy pole založenou na podmínce. Následující příklad ukazuje, jak provést tyto úpravy. Tento příklad předpokládá, že máte ovládací prvek DataRepeater svázaný s tabulkou produktů v databázi 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;
    }
}

Všimněte si, že pro obě tyto úpravy je nutné dodat kód k nastavení vlastností pro obě strany podmínky. Pokud nezadáte podmínku Else, zobrazí se vám za běhu neočekávaný výsledek.

Viz také

Úkoly

Řešení problému s ovládacím prvkem DataRepeater (Visual Studio)

Postupy: Jak zobrazit vázané data v ovládacím prvku DataRepeater (Visual Studio)

Postupy: Jak zobrazit nevázané data v ovládacím prvku DataRepeater (Visual Studio)

Postupy: Jak zobrazit záhlaví položka v ovládacím prvku DataRepeater (Visual Studio)

Odkaz

DataRepeater

DrawItem

Koncepty

Úvod k ovládacímu prvku DataRepeater (Visual Studio)