Поделиться через


Использование Visual C# для привязки элемента управления DataGrid к массиву объектов или структур

В этой статье содержатся сведения о привязке массива объектов к элементу управления DataGrid.

Исходная версия продукта: Visual C#
Исходный номер базы знаний: 315786

Итоги

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

Требования

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Основные понятия программирования Visual C#
  • Visual C# .NET

Проектирование класса

Класс, привязанный к элементу управления, должен иметь методы доступа к свойствам. Любое свойство, которое должно быть привязано, должно иметь метод свойства Set и метод свойства Get . В примере класса, используемого в этой статье, есть три члена. В этой статье описано только один член. Также был предоставлен параметризованный конструктор. Однако это не обязательно.

public class guitar
{
    private string make;
    private string model;
    private short year;

    public guitar()
    {
    }

    public guitar(string make, string model, short year)
    {
        Make=make;
        Model=model;
        Year=year;
    }

    public string Make
    {
        get
        {
            return make;
        }
        set
        {
            make = value;
        }
    }
}

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

Чтобы создать экземпляры и добавить их в массив, выполните следующие действия.

  1. Объявите массив.

  2. Создайте экземпляры класса и добавьте экземпляры в массив.

    private guitar[] arr=new guitar[3];
    arr[0] = new guitar("Gibson", "Les Paul", 1958);
    arr[1] = new guitar("Fender", "Jazz Bass", 1964);
    arr[2] = new guitar("Guild", "Bluesbird", 1971);
    

Привязка массива к элементу управления DataGrid

После заполнения массива задайте свойство DataSource элемента управления DataGrid массиву. Столбцы элемента управления DataGrid заполняются на основе свойств, для которых существуют методы доступа к свойствам в области.

dataGrid1.DataSource=arr;

Предоставление средств для просмотра массива

Вы можете использовать CurrencyManager для просмотра массива. Для этого свяжите CurrencyManager его с элементом BindingContext управления, в данном случае массив.

private CurrencyManager currencyManager=null;
currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];

Класс CurrencyManager имеет Position свойство, которое можно управлять итерацией элементов массива. Добавляя или вычитая из текущего DataGrid значенияPosition, можно просматривать строки элемента управления.

//Move forward one element.
currencyManager.Position++;
//Move back one element.
currencyManager.Position--;
//Move to the beginning.
currencyManager.Position = 0;
//Move to the end.
currencyManager.Position = arr.Length - 1;

Пошаговый пример

  1. В Visual C# .NET создайте проект приложения Windows. Форма1 создается по умолчанию.

  2. Добавьте в проект класс.

  3. Замените код в Class1.cs следующим кодом.

    public class guitar
    {
        private string make;
        private string model;
        private short year;
    
        public guitar()
        {
        }
    
        public guitar(string Make, string Model, short Year)
        {
            make=Make;
            model=Model;
            year=Year;
        }
    
        public string Make
        {
            get
            {
                return make;
            }
            set
            {
                make = value;
            }
        }
    
        public string Model
        {
            get
            {
                return model;
            }
            set
            {
                model = value;
            }
        }
    
        public short Year
        {
            get
            {
                return year;
            }
            set
            {
                year = value;
            }
        }
    }
    
  4. Закройте окно кода Class1.cs и перейдите в конструктор форм.

  5. Добавьте элемент управления DataGrid в Form1. Размер элемента управления DataGrid для размещения четырех столбцов и трех строк.

  6. Добавьте четыре элемента управления Button в Form1 и упорядочение кнопок по горизонтали.

  7. Измените свойство Text button1 на Next.

  8. Измените свойство Text button2 на "Назад".

  9. Измените свойство Text button3 на First.

  10. Измените свойство Text button4 на Last.

  11. Добавьте в класс Form1 приведенный далее код.

    private guitar[] arr=new guitar[3];
    private CurrencyManager currencyManager=null;
    
  12. Перейдите в конструктор форм, щелкните правой кнопкой мыши форму и выберите пункт "Свойства".

  13. Щелкните значок "События", а затем дважды щелкните событие загрузки, чтобы добавить Form1_Load событие в код.

  14. Добавьте следующий код в Form1_Load событие.

    arr[0] = new guitar("Gibson", "Les Paul", 1958);
    arr[1] = new guitar("Fender", "Jazz Bass", 1964);
    arr[2] = new guitar("Guild", "Bluesbird", 1971);
    currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];
    dataGrid1.DataSource=arr;
    
  15. Перейдите к просмотру конструктора форм.

  16. Дважды нажмите кнопку " Далее", а затем добавьте следующий код в button1_Click событие.

    currencyManager.Position++;
    
  17. Дважды щелкните "Назад", а затем добавьте в событие следующий код button2_Click .

    currencyManager.Position--;
    
  18. Дважды щелкните "Сначала", а затем добавьте следующий код в button3_Click событие.

    currencyManager.Position = 0;
    
  19. Дважды щелкните последний и добавьте в событие следующий кодbutton4_Click.

    currencyManager.Position = arr.Length - 1;
    
  20. Постройте и запустите проект.

  21. Нажмите кнопки команды, чтобы переместиться между строками элемента управления DataGrid.

    Примечание.

    При необходимости можно изменить значения объектов.

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

Правила привязки структуры совпадают с правилами привязки объекта. Требуется свойство, являющееся методом доступа к членам. Структура, созданная для этой цели, напоминает класс.

Чтобы привязать к массиву структур, выполните следующие действия.

  1. Изменение определения модуля класса Class1.cs в примере

    public class guitar
    

    в следующем примере:

    public struct guitar
    
  2. Закомментируйте конструктор по умолчанию, как показано ниже.

    //public guitar()
    //{
    //}
    
  3. Создайте и запустите пример программы еще раз и убедитесь, что она работает с массивом структур.

Ссылки

Дополнительные сведения см . в разделе "Потребители данных в Windows Forms " в справке по Visual Studio .NET Online.