Использование 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 свойство, которым можно управлять, чтобы выполнять итерацию по элементам массива. Добавив или вычитая из текущего Positionзначения , можно просматривать строки DataGrid элемента управления.

//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. Форма Form1 создается по умолчанию.

  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 и переключитесь на Designer формы.

  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. Переключитесь на Designer формы, щелкните форму правой кнопкой мыши и выберите пункт Свойства.

  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. Переключитесь, чтобы просмотреть Designer формы.

  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.