Share via


Cómo: Cambiar la apariencia de un control DataRepeater (Visual Studio)

Puede cambiar la apariencia de un control DataRepeater, en tiempo de diseño, estableciendo las propiedades o, en tiempo de ejecución, administrando el evento DrawItem.

Las propiedades que establece en tiempo de diseño cuando está seleccionada la sección de plantilla de elementos del control se repetirán para cada DataRepeaterItem en tiempo de ejecución. Las propiedades relacionadas con la apariencia del propio control DataRepeater únicamente estarán visibles en tiempo de ejecución si una parte del contenedor queda descubierto (por ejemplo, si la propiedad Padding está establecida en un valor grande).

En tiempo de ejecución, las propiedades relacionadas con la apariencia se pueden establecer basándose en condiciones. Por ejemplo, en una aplicación de programación, se puede cambiar el color de fondo de un elemento para advertir a los usuarios del vencimiento de un elemento. En el controlador de eventos DrawItem, si establece una propiedad en una instrucción condicional, como If…Then, también deberá usar una cláusula Else para especificar la apariencia en caso de que no se cumpla la condición.

Para cambiar la apariencia en tiempo de diseño

  1. En el Diseñador de Windows Forms, seleccione la región de plantilla de elementos (superior) del control DataRepeater.

  2. En la ventana Propiedades, seleccione una propiedad y cambie el valor. Entre las propiedades comunes que afectan a la apariencia se incluyen BackColor, BackgroundImage, BorderStyle y ForeColor.

Para cambiar la apariencia en tiempo de ejecución

  1. En el Editor de código, en la lista desplegable de eventos, haga clic en DrawItem.

  2. En el controlador de eventos DrawItem, agregue código para establecer las propiedades:

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

Ejemplo

Entre las personalizaciones más comunes del control DataRepeater están la de mostrar las filas en colores alternos y la de cambiar el color de un campo en función de una condición. En el ejemplo siguiente se muestra cómo llevar a cabo estas personalizaciones. En este ejemplo, se supone que tiene un control DataRepeater enlazado a la tabla Products de la base de datos 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 personalizaciones, debe proporcionar código a fin de establecer las propiedades para ambos lados de la condición. Si no especifica la condición Else, verá resultados inesperados en tiempo de ejecución.

Vea también

Tareas

Solución de problemas del control DataRepeater (Visual Studio)

Cómo: Mostrar los datos enlazados en un control DataRepeater (Visual Studio)

Cómo: Mostrar controles no enlazados en un control DataRepeater (Visual Studio)

Cómo: Mostrar los encabezados de los elementos en un control DataRepeater (Visual Studio)

Referencia

DataRepeater

DrawItem

Conceptos

Introducción al control DataRepeater (Visual Studio)