Поделиться через


Устранение неполадок при использовании элемента управления DataRepeater (Visual Studio)

Обновлен: Июль 2008

В данном разделе перечислены типичные проблемы, которые могут произойти при работе с элементом управления DataRepeater.

Не происходят события клавиатуры и мыши для элемента управления DataRepeater

Некоторые события элемента управления DataRepeater такие, как события клавиатуры и мыши, не вызываются. Это предусмотрено разработчиками. Сам управляющий элемент DataRepeater является контейнером для объектов DataRepeaterItem и к нему нельзя обратиться во время выполнения. Элемент DataRepeaterItem не предоставляет события на этапе разработки. Следовательно, щелчок по элементу или нажатие клавиши не вызовет события, если элемент находится в фокусе.

Исключение происходит, если свойство Padding имеет большее значение, чем это позволено границами элемента управления DataRepeater. В этом случае щелчок на предоставленном поле вызывает события мыши.

Чтобы устранить эту проблему, добавьте элемент управления Panel в область ItemTemplate элемента управления DataRepeater и затем добавьте остальные элементы управления в 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, которое возникает после того, как клонирование по умолчанию завершено. В следующем примере показано восстановление коллекции Items элемента управления ListBox в обработчике событий ItemCloned.

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

Потерян символ выделения заголовка элемента

При изменении свойства SelectionColor заголовка элемента в элементе управления DataRepeater, выбор некоторых цветов может вызвать исчезновение символа выделения. Изменение свойства ItemHeaderSize также может вызвать потерю символа выделения.

Цвет и размер символа выделения нельзя изменять.

  • Если свойство SelectionColor имеет значение White, при первоначальном выборе элемента символ выделения не будет отображаться.

  • Если свойству SelectionColor присвоено значение Black, то символ выделения не будет виден при выделении элемента управления, и в режиме редактирования не будет виден символ карандаша.

  • Если значение свойства ItemHeaderSize меньше 11, значки индикатора не отображаются в заголовке элемента.

Можно предоставить свои собственные заголовок элемента и символ выделения, используя элемент управления PictureBox и управляя свойством IsCurrent элемента DataRepeaterItem в событии DrawItem элемента управления DataRepeater. Дополнительные сведения см. в разделе 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

Добавлен раздел.

Изменение функции SP1.