共用方式為


HOW TO:變更 DataRepeater 控制項的外觀 (Visual Studio)

變更 DataRepeater 控制項外觀的方式有二,您可以在設計階段設定屬性,或在執行階段處理 DrawItem 事件。

選取控制項的項目樣板區段時,會在執行階段為各個 DataRepeaterItem 重複您在設計階段設定的屬性。 只有在容器的一部分處於未涵蓋的狀態時 (例如,若 Padding 屬性設為大型值),DataRepeater 控制項自身的外觀相關屬性才會在執行階段顯示。

在執行階段,外觀相關屬性可以根據條件進行設定。 例如在排程應用程式中,您可以變更項目的背景色彩,以便在項目過期時警告使用者。 在 DrawItem 事件處理常式中,如果您在如 If…Then 等的條件陳述式 (Statement) 中設定屬性,則您也必須使用 Else 子句指定當條件不成立時的外觀。

若要在設計階段變更外觀

  1. 在 [Windows Form 設計工具] 中,選取 DataRepeater 控制項的項目樣板 (上方) 區域。

  2. 在 [屬性] 視窗中,選取屬性並變更其值。 一般會影響外觀的屬性有 BackColorBackgroundImageBorderStyleForeColor

若要在執行階段變更外觀

  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 資料庫中的 Products 資料表。

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

請注意,針對這兩種自訂,您必須提供程式碼,以便設定正、反條件的屬性。 如果不指定 Else 條件,則在執行階段將看到意外的結果。

請參閱

工作

疑難排解 DataRepeater 控制項 (Visual Studio)

HOW TO:在 DataRepeater 控制項中顯示繫結資料 (Visual Studio)

HOW TO:在 DataRepeater 控制項中顯示未繫結資料 (Visual Studio)

HOW TO:在 DataRepeater 控制項中顯示項目標題 (Visual Studio)

參考

DataRepeater

DrawItem

概念

DataRepeater 控制項簡介 (Visual Studio)