HOW TO:變更 DataRepeater 控制項的外觀 (Visual Studio)
變更 DataRepeater 控制項外觀的方式有二,您可以在設計階段設定屬性,或在執行階段處理 DrawItem 事件。
選取控制項的項目樣板區段時,會在執行階段為各個 DataRepeaterItem 重複您在設計階段設定的屬性。 只有在容器的一部分處於未涵蓋的狀態時 (例如,若 Padding 屬性設為大型值),DataRepeater 控制項自身的外觀相關屬性才會在執行階段顯示。
在執行階段,外觀相關屬性可以根據條件進行設定。 例如在排程應用程式中,您可以變更項目的背景色彩,以便在項目過期時警告使用者。 在 DrawItem 事件處理常式中,如果您在如 If…Then 等的條件陳述式 (Statement) 中設定屬性,則您也必須使用 Else 子句指定當條件不成立時的外觀。
若要在設計階段變更外觀
在 [Windows Form 設計工具] 中,選取 DataRepeater 控制項的項目樣板 (上方) 區域。
在 [屬性] 視窗中,選取屬性並變更其值。 一般會影響外觀的屬性有 BackColor、BackgroundImage、BorderStyle 和 ForeColor。
若要在執行階段變更外觀
在 [程式碼編輯器] 中,按一下 [事件] 下拉式清單中的 [DrawItem]。
在 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)