Практическое руководство. Навигация по набору данных, отображаемых в форме Windows Forms
В приложении Windows самый простой способ обеспечения навигации по записям в источнике данных заключается в привязке компонента BindingSource к источнику данных и последующей привязке элементов управления к BindingSource. Затем в BindingSource можно использовать встроенный метод навигации, такой как MoveNext, MoveLast, MovePrevious и MoveFirst. Использование этих методов будет соответствующим образом корректировать свойства Position и Current компонента BindingSource. Вы также можете найти элемент и установить его в качестве текущего элемента, задав свойство Position.
Увеличение позиции в источнике данных
Задайте для свойства Position компонента BindingSource для ваших привязанных данных позицию записи, к которой нужно перейти. В следующем примере показано использование метода MoveNextBindingSource для увеличения значения свойства Position при щелчке
nextButton
. Компонент BindingSource связан с таблицейCustomers
набора данныхNorthwind
.Примечание.
Установка для свойства Position значения, выходящего за пределы первой или последней записи, не приводит к ошибке, поскольку .NET Framework не позволит вам установить для позиции значение за пределами списка. Если в вашем приложении важно знать, вышли ли вы за пределы первой или последней записи, включите логику для проверки того, превысите ли вы количество элементов данных.
private void nextButton_Click(object sender, System.EventArgs e) { this.customersBindingSource.MoveNext(); }
Private Sub nextButton_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles nextButton.Click Me.customersBindingSource.MoveNext() End Sub
Проверка, прошли ли вы конец или начало
Создайте обработчик событий для события PositionChanged. В обработчике можно проверить, превышает ли предлагаемое значение позиции фактическое количество элементов данных.
В следующем примере показано, как можно проверить, достигли ли вы последнего элемента данных. В этом примере когда вы оказываетесь в последнем элементе, кнопка Далее в форме отключается.
Примечание.
Имейте в виду, что если вы измените список, по которому осуществляется навигация в коде, необходимо заново включить кнопку Далее, чтобы пользователи могли просматривать новый список на всю длину. Кроме того, не забывайте, что указанное выше событие PositionChanged для конкретного BindingSource, с которым вы работаете, должно быть связано с его методом обработки событий. Ниже приведен пример метода обработки события PositionChanged:
void customersBindingSource_PositionChanged(object sender, EventArgs e) { if (customersBindingSource.Position == customersBindingSource.Count - 1) nextButton.Enabled = false; else nextButton.Enabled = true; }
Sub customersBindingSource_PositionChanged(ByVal sender As Object, _ ByVal e As EventArgs) If customersBindingSource.Position = _ customersBindingSource.Count - 1 Then nextButton.Enabled = False Else nextButton.Enabled = True End If End Sub
Поиск элемента и установка его в качестве текущего элемента
Найдите запись, которую вы хотите задать в качестве текущего элемента. Это можно сделать с помощью метода FindBindingSource, если источник данных реализует IBindingList. Примеры источников данных, реализующих IBindingList: BindingList<T>и DataView.
void findButton_Click(object sender, EventArgs e) { int foundIndex = customersBindingSource.Find("CustomerID", "ANTON"); customersBindingSource.Position = foundIndex; }
Sub findButton_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles findButton.Click Dim foundIndex As Integer = customersBindingSource.Find("CustomerID", _ "ANTON") customersBindingSource.Position = foundIndex End Sub
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по