Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В приложении 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. В обработчике можно проверить, превышает ли предлагаемое значение позиции фактическое число элементов данных.
В следующем примере показано, как проверить, достигли ли вы последнего элемента данных. В примере, если вы находитесь в последнем элементе, кнопка Next в форме отключена.
Заметка
Помните, что если вы изменяете список, который вы перемещаете в коде, необходимо повторно включить кнопку Далее, чтобы пользователи могли просматривать всю длину нового списка. Кроме того, имейте в виду, что указанное выше событие 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
Поиск элемента и его настройка в качестве текущего элемента
Найдите запись, которую вы хотите задать в качестве текущего элемента. Вы можете сделать это, используя метод Find из BindingSource, если ваш источник данных реализует IBindingList. Ниже приведены некоторые примеры источников данных, реализующих IBindingListBindingList<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
См. также
- Источники данных, поддерживаемые Windows Forms
- уведомление об изменении в привязке данных Windows Forms
- Привязка данных и Windows Forms
- Привязка данных в Windows Forms
.NET Desktop feedback