Практическое руководство. Навигация по набору данных, отображаемых в форме Windows Forms
Наиболее простым способом перехода по записям источника данных в приложении Windows является привязка компонента BindingSource к источнику данных и последующая привязка элементов управления к компоненту BindingSource. После этого можно использовать встроенные методы навигации компонента BindingSource, например MoveNext, MoveLast, MovePrevious и MoveFirst. Использование этих методов позволит правильно настроить свойства Position и Current компонента BindingSource. Можно также найти элемент и сделать его текущим, установив свойство Position.
Увеличение позиции в источнике данных
Присвойте номер записи связанных данных, на которую следует переместиться, свойству Position компонента BindingSource . В следующем примере демонстрируется использование метода MoveNext компонента BindingSource для увеличения значения свойства Position при щелчке элемента управления nextButton. Компонент BindingSource связан с таблицей Customers набора данных Northwind.
Примечание
Если для свойства Position задать значение, которое выходит за пределы диапазона, ограниченного первой и последней записями, это не приведет к ошибке, так как платформа .NET Framework не разрешит задать значение положения, выходящее за границы списка.Если в приложении важно знать, достигнута ли первая или последняя запись, добавьте логику для проверки превышения количества элементов данных.
Private Sub nextButton_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles nextButton.Click Me.customersBindingSource.MoveNext() End Sub
private void nextButton_Click(object sender, System.EventArgs e) { this.customersBindingSource.MoveNext(); }
Чтобы проверить, достигнута ли первая или последняя запись, выполните следующие действия.
Создайте обработчик событий для события PositionChanged. В обработчике можно проверить, превысило ли предполагаемое значение положения действительное значение счетчика элементов данных.
В следующем примере показано, как можно реализовать проверку достижения последнего элемента данных. В примере при достижении последнего элемента отключается кнопка Далее.
Примечание
Обратите внимание, что при изменении списка, по которому перемещается пользователь, в коде следует снова включить кнопку Далее, чтобы пользователи могли просматривать новый список целиком.Кроме того, следует учесть, что вышеупомянутое событие PositionChanged используемого компонента BindingSource должно быть связано со своим методом обработки событий.Ниже приведен пример метода обработки события PositionChanged.
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
void customersBindingSource_PositionChanged(object sender, EventArgs e) { if (customersBindingSource.Position == customersBindingSource.Count - 1) nextButton.Enabled = false; else nextButton.Enabled = true; }
Чтобы найти элемент и сделать его текущим, выполните следующие действия.
Найдите запись, которую необходимо сделать текущим элементом. Если источник данных реализует интерфейс IBindingList, то для поиска элемента можно использовать метод Find компонента BindingSource. В качестве примеров источников данных, реализующих интерфейс IBindingList, можно назвать объекты BindingList<T> и DataView.
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
void findButton_Click(object sender, EventArgs e) { int foundIndex = customersBindingSource.Find("CustomerID", "ANTON"); customersBindingSource.Position = foundIndex; }
См. также
Основные понятия
Источники данных, поддерживаемые Windows Forms
Получение уведомления об изменении данных, связанных с элементом управления, в Windows Forms
Связывание данных и Windows Forms