DataRepeater 控件疑难解答 (Visual Studio)

更新:2007 年 11 月

本主题列出了在使用 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)

修订记录

日期

修订

原因

2008 年 7 月

新增主题。

SP1 功能更改。