Como: alterar a aparência de um controle DataRepeater (Visual Studio)

Você pode alterar a aparência de um DataRepeater controle em tempo de design, definindo propriedades ou em tempo de execução pelo tratamento a DrawItem evento.

Propriedades que podem ser definidas em tempo de design quando a seção de modelo de item do controle é selecionada serão repetidas para cada DataRepeaterItem em tempo de execução.Propriedades relacionadas a aparência da DataRepeater controle propriamente dito ficará visível em tempo de execução somente se uma parte do contêiner é deixado revelado (por exemplo, se a Padding propriedade estiver definida como um valor grande).

Em tempo de execução, propriedades relacionadas à aparência podem ser definidas com base nas condições.Por exemplo, em um aplicativo de agendamento, você pode alterar a cor de plano de fundo de um item para avisar os usuários quando um item está vencido.No DrawItem manipulador de eventos, se você definir uma propriedade em uma instrução condicional, tais como If…Then, você também deve usar um Else cláusula para especificar a aparência quando a condição não for atendida.

Para alterar a aparência em tempo de design

  1. No Windows Forms Designer, selecione a região de modelo (superior) do item da DataRepeater controle.

  2. Na janela Properties, selecione uma propriedade e alterar o valor.Propriedades comuns que afetam a aparência incluem BackColor, BackgroundImage, BorderStyle, e ForeColor.

Para alterar a aparência em tempo de execução

  1. No Editor de código, além de eventos na lista suspensa, clique em DrawItem.

  2. No DrawItem o manipulador de eventos, adicione código para definir as propriedades:

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

Exemplo

Algumas personalizações comuns para o DataRepeater controle incluem exibir as linhas em cores alternadas e alterando a cor de um campo com base em uma condição.O exemplo a seguir mostra como realizar essas personalizações.Este exemplo presume que você tenha um DataRepeater controle está acoplado à tabela Produtos no banco de dados 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;
    }
}

Observe que, para ambas essas personalizações, você deve fornecer o código para definir as propriedades de ambos os lados da condição.Se você não especificar o Else condição, você verá resultados inesperados em tempo de execução.

Consulte também

Tarefas

Solucionando problemas de controle DataRepeater (Visual Studio)

Como: exibição vinculado a dados em um controle DataRepeater (Visual Studio)

Como: exibir não acoplados a controles em um controle DataRepeater (Visual Studio)

Como: exibir cabeçalhos de Item em um controle DataRepeater (Visual Studio)

Referência

DataRepeater

DrawItem

Conceitos

Introdução ao controle DataRepeater (Visual Studio)