DataRepeater 控件疑难解答 (Visual Studio)

本主题列出了在使用 DataRepeater 控件时可能会出现的一些常见问题。

未能引发 DataRepeater 键盘和鼠标事件

未能引发某些 DataRepeater 控件事件,如键盘和鼠标事件。这是设计使然。DataRepeater 控件自身是 DataRepeaterItem 对象的容器,不能在运行时访问。DataRepeaterItem 在设计时不公开事件。因此,当某个项具有焦点时单击该项或按键盘键不能引发事件。

这种情况的例外是:Padding 属性设置为足够大的值,暴露了 DataRepeater 控件的边缘。在这种情况下,在暴露的边距内单击会引发鼠标事件。

若要解决此问题,请向 DataRepeater 控件的 ItemTemplate 部分添加一个 Panel 控件,再将其他控件添加到 Panel 中。然后可以向 Panel 控件的键盘和鼠标事件的事件处理程序中添加代码。

DataRepeater 部分隐藏在绑定导航器后面

当首次将 DataRepeater 控件添加到窗体中,然后从**“数据源”窗口中添加数据绑定控件时,BindingNavigator 控件可能会显示在 DataRepeater 控件的顶部。这是“数据源”**窗口的一个已知局限性,与其他控件(如 DataGridView 控件)的行为一致。

您可以在设计时移动 DataRepeater,使其低于 BindingNavigator 控件,或向 Load 事件处理程序中添加与下面类似的代码。

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

运行时某些控件无法正确显示

运行时 DataRepeater 控件中的某些控件不能按照预期的方式显示。用于将控件从 ItemTemplate 克隆到 DataRepeaterItem 的过程并不能总是确定所有控件的所有属性。例如,如果在设计时将未绑定的 ListBox 控件添加到 DataRepeater 控件并用字符串列表填充它的 Items 集合,则 ListBox 在运行时将为空。这是因为克隆过程无法考虑 Items 属性。

您可以通过在 ItemCloned 事件(该事件在默认克隆过程完成之后发生)中还原缺少的属性来解决此类问题。下面的示例演示如何在 ItemCloned 事件处理程序中修复 ListBoxItems 集合。

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

请参见

任务

如何:在 DataRepeater 控件中显示绑定数据 (Visual Studio)

如何:在 DataRepeater 控件中显示未绑定的数据 (Visual Studio)

如何:更改 DataRepeater 控件的布局 (Visual Studio)

如何:更改 DataRepeater 控件的外观 (Visual Studio)

如何:在 DataRepeater 控件中显示项标题 (Visual Studio)

如何:禁止添加和删除 DataRepeater 项 (Visual Studio)

如何:在 DataRepeater 控件中搜索数据 (Visual Studio)

如何:使用两个 DataRepeater 控件创建主/详细信息窗体 (Visual Studio)

概念

DataRepeater 控件简介 (Visual Studio)