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


Пошаговое руководство. Создание пользовательского элемента управления Windows Forms с подстановочной привязкой данных

 

Опубликовано: Апрель 2016

При отображении данных на формах Windows Forms вы можете выбрать имеющиеся элементы управления в области элементов или создать пользовательские элементы управления, если вашему приложению требуется функциональность, отсутствующая в стандартных элементах управления. В этом пошаговом руководстве демонстрируется создание элемента управления, реализующего LookupBindingPropertiesAttribute. Элементы управления, реализующие LookupBindingPropertiesAttribute, могут содержать три свойства, которые можно привязать к данным. Такие элементы управления похожи на ComboBox.

Дополнительные сведения о создании элементов управления см. в разделе Создание элементов управления Windows Forms во время разработки.

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

Использование атрибута привязки к данным
Реализуйте DefaultBindingPropertyAttribute на простых элементах управления, таких как TextBox, которые отображают отдельный столбец (или свойство) данных. Для получения дополнительной информации см. Пошаговое руководство. Создание пользовательского элемента управления Windows Forms с простой привязкой данных.
Реализуйте ComplexBindingPropertiesAttribute на элементах управления, таких как DataGridView, которые отображают списки (или таблицы) данных. Для получения дополнительной информации см. Пошаговое руководство. Создание пользовательского элемента управления Windows Forms со сложной привязкой данных.
Реализуйте LookupBindingPropertiesAttribute на элементах управления, таких как ComboBox, которые отображают списки (или таблицы) данных, но также должны представлять отдельный столбец или отдельное свойство. (Этот процесс описан в данном пошаговом руководстве.)

В этом пошаговом руководстве создается элемент управления поиска, который привязан к данным из двух таблиц. В данном примере используются таблицы Customers и Orders из учебной базы данных "Борей". Элемент управления поиска будет привязан к полю CustomerID из таблицы Orders. Он будет использовать это значение для поиска CompanyName в таблице Customers.

В этом пошаговом руководстве описаны следующие процедуры.

  • Создание нового проекта Приложение Windows.

  • Добавление нового Пользовательского элемента управления в проект.

  • Визуальное проектирование пользовательского элемента управления.

  • Реализация атрибута LookupBindingProperty.

  • Создание набора данных с помощью мастер настройки источника данных.

  • Настройка столбца CustomerID таблицы Заказы в окне Источники данных на использование нового элемента управления.

  • Создание формы для отображения данных в новом элементе управления.

Обязательные компоненты

Для выполнения данного пошагового руководства требуется:

Создание приложения Windows

Первым шагом является создание Приложения Windows.

Порядок создания нового проекта Windows

  1. В меню Файл Visual Studio создайте новый Проект.

  2. Присвойте проекту имя "LookupControlWalkthrough".

  3. Выберите Приложение Windows и нажмите кнопку ОК. Для получения дополнительной информации см. Клиентские приложения.

    Создается проект LookupControlWalkthrough, который добавляется в Обозреватель решений.

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

В данном руководстве элемент управления поиска создается из Пользовательского элемента управления, поэтому добавьте в проект LookupControlWalkthrough элемент Пользовательский элемент управления.

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

  1. В меню Проект выберите пункт Добавить пользовательский элемент управления.

  2. Введите LookupBox в области Имя и нажмите кнопку Добавить.

    Элемент управления LookupBox добавляется в Обозреватель решений и открывается в конструкторе.

Проектирование элемента управления LookupBox

Порядок проектирования элемента управления LookupBox

  • Перетащите ComboBox из Области элементов на рабочую область конструирования пользовательского элемента управления.

Добавление необходимого атрибута привязки к данным

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

Реализация атрибута LookupBindingProperties

  1. Переключите элемент управления LookupBox в представление кода. (В меню Вид выберите Код.)

  2. Замените код в LookupBox следующим кодом:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")>
    Public Class LookupBox
    
        Public Property DataSource() As Object
            Get
                Return ComboBox1.DataSource
            End Get
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set
        End Property
    
        Public Property DisplayMember() As String
            Get
                Return ComboBox1.DisplayMember
            End Get
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set
        End Property
    
        Public Property ValueMember() As String
            Get
                Return ComboBox1.ValueMember
            End Get
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set
        End Property
    
        Public Property LookupMember() As String
            Get
                Return ComboBox1.SelectedValue.ToString()
            End Get
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set
        End Property
    End Class
    
  3. В меню Построение выберите пункт Построить решение.

Создание источника данных из вашей базы данных

В этом шаге Мастер настройки источника данных используется для создания источника данных на основе таблиц Customers и Orders в учебной базе данных "Борей". Для создания подключения необходимо иметь доступ к учебной базе данных "Борей". Дополнительные сведения о настройке учебной базы данных "Борей" см. в разделе Практическое руководство. Установка образцов баз данных.

Создание источника данных

  1. В меню Данные выберите команду Показать источники данных.

  2. В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.

  3. На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.

  4. На странице Выбор подключения к базе данных выполните одно из следующих действий.

    • Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.

      -или-

    • Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.

  5. Если базе данных требуется пароль, выберите параметр для включения конфиденциальных данных и щелкните Далее.

  6. На странице Сохранение подключения в файле конфигурации приложения нажмите кнопку Далее.

  7. Разверните узел Таблицы на странице Выбор объектов базы данных.

  8. Выберите таблицы Customers и Orders и нажмите кнопку Готово.

    Объект NorthwindDataSet добавляется в проект, и таблицы Customers и Orders отображаются в окне Источники данных.

Настройка столбца CustomerID таблицы заказов на использование элемента управления LookupBox

Вы можете задать создаваемый элемент управления в окне Источники данных перед перетаскиванием элементов на форму.

Порядок настройки столбца CustomerID на привязку к элементу управления LookupBox

  1. Откройте Form1 в конструкторе.

  2. Разверните узел Клиенты в окне Источники данных.

  3. Разверните узел Заказы (в узле Клиенты под столбцом Факс).

  4. Щелкните стрелку раскрывающегося списка в узле Заказы и выберите Сведения в списке элементов управления.

  5. Щелкните стрелку раскрывающегося списка в столбце CustomerID (в узле Заказы) и выберите Настройка.

  6. Выберите LookupBox в списке Связанные элементы управления диалогового окна Настройка данных интерфейса пользователя.

  7. Нажмите кнопку ОК.

  8. Щелкните стрелку раскрывающегося списка в столбце CustomerID и выберите LookupBox.

Добавление элементов управления на форму

Вы можете создавать элементы управления с привязкой к данным с помощью перетаскивания элементов из окна Источники данных на Form1.

Создание элементов управления с привязкой к данным на форме Windows Forms

  • Перетащите узел Заказы из окна Источники данных на форму Windows Forms и убедитесь, что элемент управления LookupBox используется для отображения данных в столбце CustomerID.

Привязка элемента управления для поиска CompanyName в таблице клиентов

Настройка привязок поиска

Запуск приложения

Запуск приложения

  • Нажмите клавишу F5 для запуска приложения.

  • Перейдите по нескольким записям и проверьте, что CompanyName отображается в элементе управления LookupBox.

См. также

Задание поведения, при котором элемент управления создается при перетаскивании из окна "Источники данных"
Привязка элементов управления Windows Forms к данным в Visual Studio
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Выборка данных в приложение
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении
Проверка данных
Сохранение данных