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

更新: 2008 年 7 月

本主題列出使用 DataRepeater 控制項時可能發生的常見問題。

不會引發 DataRepeater 鍵盤和滑鼠事件

未引發某些 DataRepeater 控制項事件 (例如鍵盤和滑鼠事件)。這是設計上的預期行為。DataRepeater 控制項本身是 DataRepeaterItem 物件的容器,無法在執行階段進行存取。DataRepeaterItem 在設計階段不會公開 (Expose) 事件,因此當項目獲得焦點 (Focus) 時,按下項目或按鍵盤按鍵並不會引發事件。

不過,如果為 Padding 屬性設定之值的大小足以公開 DataRepeater 控制項的邊緣,則為上述之例外狀況。在這種狀況下,按下公開的邊界將引發滑鼠事件。

若要解決這個問題,請將 Panel 控制項加入至 DataRepeater 控制項的 ItemTemplate 區段,再將其他的控制項加入至 Panel。然後,您就可以將程式碼加入至 Panel 控制項的事件處理常式,處理鍵盤和滑鼠事件。

DataRepeater 部分隱藏在繫結導覽後面

當您先將 DataRepeater 控制項加入至表單,然後再從 [資料來源] 視窗加入資料繫結控制項時,BindingNavigator 控制項可能會顯示在 DataRepeater 控制項的最上層。此為 [資料來源] 視窗已知的限制,而且它與其他控制項 (例如 DataGridView 控制項) 的行為一致。

您可以在設計階段將 DataRepeater 移到 BindingNavigator 控制項的下層,或是在 Load 事件處理常式中加入與下列類似的程式碼。

DataRepeater1.Top = ProductsBindingNavigator.Height
dataRepeater1.Top = productsBindingNavigator.Height;

控制項在執行階段沒有正確顯示

DataRepeater 控制項中的某些控制項在執行階段可能無法如預期顯示。從 ItemTemplate 將控制項複製 (Clone) 至 DataRepeaterItem 時所使用的程序不一定每次都能判斷所有控制項的所有屬性。例如,如果您在設計階段將未繫結 ListBox 控制項加入至 DataRepeater 控制項,並以字串清單填入 (Populate) 其 Items 集合,則 ListBox 在執行階段會是空的。這是因為複製程序無法將 Items 屬性納入考量。

您可以還原 ItemCloned 事件 (會在預設複製完成後發生) 中遺失的屬性,藉以修正這類的問題。下列範例示範如何在 ItemCloned 事件處理常式中修復 ListBox 控制項的 Items 集合。

Private Sub DataRepeater1_ItemCloned(ByVal sender As Object, ByVal e _
 As Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs) _
 Handles DataRepeater1.ItemCloned
    Dim Source As ListBox = _
     CType(DataRepeater1.ItemTemplate.Controls.Item("ListBox1"), ListBox)
    Dim ListBox1 As ListBox = _
     CType(e.DataRepeaterItem.Controls.Item("ListBox1"), ListBox)
    For Each s As String In Source.Items
        ListBox1.Items.Add(s)
    Next
End Sub
private void dataRepeater1_ItemCloned(object sender, 
    Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
{
    ListBox Source = (ListBox)dataRepeater1.ItemTemplate.Controls["listBox1"];
    ListBox listBox1 = (ListBox)e.DataRepeaterItem.Controls["listBox1"];
    foreach (string s in Source.Items)
    {
        listBox1.Items.Add(s);
    }
}

遺失項目標題的選取符號

DataRepeater 控制項中變更項目標題的 SelectionColor 屬性時,某些色彩選擇可能會使選取符號消失。此外,變更 ItemHeaderSize 屬性也可能會造成選取符號消失。

選取符號的色彩及大小是無法變更的。

  • 如果將 SelectionColor 設定為 White,則項目第一次被選取時並不會顯示選取符號。

  • 如果將 SelectionColor 設定為 Black,則選取控制項時並不會顯示選取符號,而且控制項處於編輯模式時也不會顯示鉛筆符號。

  • 如果 ItemHeaderSize 屬性值是設定為小於 11,則在項目標題中不會顯示指示器符號。

藉由使用 PictureBox 控制項,並在 DataRepeater 控制項的 DrawItem 事件中監視 DataRepeaterItemIsCurrent,您可以自行提供項目標題和選取符號。如需詳細資訊,請參閱 IsCurrent

請參閱

工作

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

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

HOW TO:變更 DataRepeater 控制項的配置 (Visual Studio)

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

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

HOW TO:停用加入和刪除 DataRepeater 項目 (Visual Studio)

HOW TO:搜尋 DataRepeater 控制項中的資料 (Visual Studio)

HOW TO:使用兩個 DataRepeater 控制項建立主從式表單 (Visual Studio)

概念

DataRepeater 控制項簡介 (Visual Studio)

變更記錄

日期

記錄

原因

2008 年 7 月

加入主題。

SP1 功能變更。