Поделиться через


Практическое руководство. Изменение внешнего вида элемента управления DataRepeater (Visual Studio)

Обновлен: Июль 2008

Внешний вид элемента управления DataRepeater можно изменить во время разработки путем настройки свойств или во время выполнения при помощи обработки события DrawItem.

Свойства, установленные во время разработки при выборе подраздела шаблонов элементов управляющего элемента, будут повторены для каждого элемента DataRepeaterItem во время выполнения. Связанные с внешним видом свойства элемента управления DataRepeater будут видны во время выполнения только в том случае, если часть контейнера останется открытой (например, если свойство Padding устанавливает максимальное значение).

Во время выполнения свойства, связанные с отображением, можно установить в зависимости от ситуации. Например, в приложении по планированию можно изменить цвет фона элемента для предупреждения пользователей о просроченных элементах. В обработчике событий DrawItem, если значение свойства задается в условном операторе, например, If…Then, необходимо также использовать предложение Else, чтобы указать вид элемента, если условие не будет выполнено.

Чтобы изменить внешний вид во время разработки

  1. В конструкторе Windows Forms выберите вверху область шаблона элемента для управляющего элемента DataRepeater.

  2. В окне "Свойства" выберите свойство и измените его значение. Общие свойства, влияющие на внешний вид, включая BackColor, BackgroundImage, BorderStyle и ForeColor.

Чтобы изменить внешний вид во время выполнения

  1. В редакторе кода в раскрывающемся списке "Событие" выберите DrawItem.

  2. В обработчик событий DrawItem добавьте код, чтобы установить свойства:

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

Пример

Некоторые стандартные настройки для элемента управления DataRepeater включают возможности отображения строк различными цветами и изменения цвета поля на основе условия. Выполнение этих настроек показано в следующем примере. Пример предполагает наличие элемента управления DataRepeater, привязанного к таблице "Продукты" в базе данных 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;
    }
}

Обратите внимание, что для всех этих настроек следует предоставить код, чтобы установить свойства в зависимости от значения условия. Если условие Else не указано, во время выполнения могут возникнуть непредсказуемые результаты.

См. также

Задачи

Устранение неполадок при использовании элемента управления DataRepeater (Visual Studio)

Пошаговое руководство. Отображение связанных данных в элементе управления DataRepeater (Visual Studio)

Пошаговое руководство. Отображение несвязанных данных в элементе управления DataRepeater (Visual Studio)

Пошаговое руководство. Отображение заголовков элементов в элементе управления DataRepeater (Visual Studio)

Основные понятия

Общие сведения об элементе управления DataRepeater (Visual Studio)

Ссылки

DataRepeater

DrawItem

Журнал изменений

Дата

Журнал изменений

Причина

Июль 2008

Добавлен раздел.

Изменение функции SP1.