Устранение неполадок при использовании элемента управления DataRepeater (Visual Studio)
В данном разделе перечислены типичные проблемы, которые могут произойти при работе с элементом управления 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)