Как осуществить привязку элемента управления DataGrid к коллекции объектов или структур с помощью Microsoft Visual Basic .NET

За соответствующей информацией по Microsoft Visual C# .NET обратитесь к следующей статье:
316303 .

Аннотация

В данной статье описывается, как осуществить привязку коллекции (ArrayList) объектов к элементу управления DataGrid. Пример состоит из формы Windows с элементом управления DataGrid для отображения значений свойства объекта, а также из четырех кнопок для перемещения по строкам элемента управления DataGrid.

Требования

Ниже приводится описание рекомендуемого оборудования, программного обеспечения, сетевой инфраструктуры и необходимых пакетов обновлений:
  • Visual Basic .NET
Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний по следующим темам:
  • Концепции программирования на Visual Basic

Создание класса

Класс, который будет привязан к элементу управления, должен иметь средство доступа к свойствам. Любое свойство, которое будет привязано, должно иметь методы Property Set и Property Get. Класс, представленный в данной статье, имеет три члена (приведен только один). Также имеется параметризованный конструктор, но он не обязателен.
Public Class guitar
Private m_make As String
Private m_model As String
Private m_year As Short

Public Sub New(ByVal make, ByRef model, ByVal year)
m_make = make
m_model = model
m_year = year
End Sub
Public Property make() As String
Get
Return m_make
End Get
Set(ByVal Value As String)
m_make = Value
End Set
End Property

End Class

Добавление экземпляров класса в коллекцию

Для создания экземпляров класса и добавления их в коллекцию (ArrayList) выполните следующие действия:
  1. Объявите ArrayList.
  2. Создайте экземпляры класса и добавьте их в ArrayList.
Private al as New Arraylist()

al.Add(New guitar("Gibson", "Les Paul", 1958))
al.Add(New guitar("Fender", "Jazz Bass", 1964))
al.Add(New guitar("Guild", "Bluesbird", 1971))

Привязка списка массивов к DataGrid

После заполнения ArrayList укажите в свойстве DataSource коллекцию ArrayList в качестве источника DataGrid. Столбцы в элементе управления DataGrid заполняются, базируясь на свойствах, для которых имеются средства доступа к свойствам в пределах области видимости.
DataGrid1.DataSource = al

Предоставление средств обзора коллекции

Вы можете воспользоваться CurrencyManager для обзора ArrayList. Для этого ассоциируйте CurrencyManager с BindingContext элемента управления (в данном случае, ArrayList).
Private cManager As CurrencyManager

cManager = CType(DataGrid1.BindingContext(al), CurrencyManager)
Класс CurrencyManager имеет свойство Position, которым Вы можете воспользоваться для перебора элементов ArrayList. Путем увеличения или уменьшения действительного значения Position Вы можете перемещаться по строкам элемента управления DataGrid.
'Перейти на один элемент вперед.
cManager.Position += 1
'Перейти на один элемент назад.
cManager.Position -= 1
'Перейти в начало.
cManager.Position = 0
'Перейти в конец.
cManager.Position = al.Count - 1

Пример

  1. В Visual Basic .NET создайте проект "Приложение Windows". Form1 создается по умолчанию.
  2. В меню Project запустите команду Add Class для добавления класса в проект.
  3. Замените программный код в Class1.vb следующим кодом:
    Public Class guitar
    Private m_make As String
    Private m_model As String
    Private m_year As Short

    Public Sub New(ByVal make, ByRef model, ByVal year)
    m_make = make
    m_model = model
    m_year = year
    End Sub
    Public Property make() As String
    Get
    Return m_make
    End Get
    Set(ByVal Value As String)
    m_make = Value
    End Set
    End Property
    Public Property model() As String
    Get
    Return m_model
    End Get
    Set(ByVal Value As String)
    m_model = Value
    End Set
    End Property
    Public Property year() As Short
    Get
    Return m_year
    End Get
    Set(ByVal Value As Short)
    m_year = Value
    End Set
    End Property
    End Class
  4. Закройте окно кода Class1.vb code window и переключитесь в режим "Form Designer".
  5. Добавьте элемент управления DataGrid на Form1. Измените размер элемента управления DataGrid до четырех столбцов и трех строк.
  6. Добавьте четыре элемента управления Button в Form1 и расположите кнопки горизонтально.
  7. Для свойства Text элемента Button1 задайте значение Следующий.
  8. Для свойства Text элемента Button2 задайте значение Предыдущий.
  9. Для свойства Text элемента Button3 задайте значение Первый.
  10. Для свойства Text элемента Button4 задайте значение Последний.
  11. Добавьте следующий программный код в класс Form1:
    Private cManager As CurrencyManager
    Private al as New ArrayList()
  12. Вставьте следующий код в событие Form1_Load:
    al.Add(New guitar("Gibson", "Les Paul", 1958))
    al.Add(New guitar("Fender", "Jazz Bass", 1964))
    al.Add(New guitar("Guild", "Bluesbird", 1971))

    cManager = CType(DataGrid1.BindingContext(al), CurrencyManager)

    DataGrid1.DataSource = al
  13. Вставьте следующий код после процедуры Form_Load:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    cManager.Position += 1
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    cManager.Position -= 1
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    cManager.Position = 0
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    cManager.Position = al.Count - 1
    End Sub
  14. Скомпилируйте проект.
  15. Используйте командные кнопки для передвижения по строкам элемента управления DataGrid. Вы можете изменить значения объектов, если это необходимо.

Использование структуры вместо класса

Правила по привязке структуры такие же, как и для привязки объекта. Средство доступа к свойствам (членам) необходимо. Структура, создаваемая для данной цели, близка к классу.

Для привязки коллекции структур ArrayList выполните следующие действия:
  1. Измените описание модуля класса Class1.vb в примере с
    Public Class guitar
    '...
    End Class
    на:
    Public Structure guitar
    '...
    End Structure
  2. Скомпилируйте программу и убедитесь в ее функционировании с коллекцией структурArrayList.

Ссылки

Для получения дополнительной информации обратитесь к разделу "Consumers of Data on Windows Forms" онлайн-справки по Visual Studio .NET.

Свойства

Номер статьи: 316302 — последний просмотр: 7 апр. 2003 г. — редакция: 1

Отзывы и предложения