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

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

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

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

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

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

В этом пошаговом руководстве создается простой элемент управления, отображающий данные из одного столбца в таблице. В этом примере используется Phone столбец Customers таблицы из примерной базы данных Northwind. Простой пользовательский элемент управления отображает номера телефонов клиентов в стандартном формате номера телефона, используя MaskedTextBox и установив маску на номер телефона.

В этом пошаговом руководстве вы узнаете, как:

  • Создайте приложение Windows Forms (.NET Framework).

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

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

  • DefaultBindingProperty Реализуйте атрибут.

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

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

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

Предпосылки

Чтобы пройти это руководство, вам потребуются рабочие компоненты для разработки приложений для настольных ПК на .NET и хранения и обработки данных, установленные в Visual Studio. Чтобы установить их, откройте Установщик Visual Studio и выберите Изменить (или Дополнительно>Изменить) рядом с версией Visual Studio, которую вы хотите изменить. См. изменения в Visual Studio.

В этом пошаговом руководстве используется SQL Server Express LocalDB и пример базы данных Northwind.

  1. Если у вас нет SQL Server Express LocalDB, установите его на странице скачивания SQL Server Express или с помощью Установщика Visual Studio. В установщике Visual Studioможно установить SQL Server Express LocalDB в рамках рабочей нагрузки хранилища данных и обработки или как отдельный компонент.

  2. Установите пример базы данных Northwind, выполнив следующие действия.

    1. В Visual Studio откройте окно обозревателя объектов SQL Server. (Обозреватель объектов SQL Server устанавливается как часть рабочей нагрузки хранилища данных и обработки в Установщике Visual Studio.) Разверните узел SQL Server . Щелкните правой кнопкой мыши экземпляр LocalDB и выберите Новый запрос.

      Откроется окно редактора запросов.

    2. Скопируйте скрипт Northwind Transact-SQL в буфер обмена. Этот скрипт T-SQL создает базу данных Northwind с нуля и заполняет ее данными.

    3. Вставьте скрипт T-SQL в редактор запросов, а затем нажмите кнопку Выполнить.

      Через некоторое время запрос завершает работу и создается база данных Northwind.

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

Первым шагом является создание приложения Windows Forms (.NET Framework):

  1. В Visual Studio в меню "Файл " выберите "Создать>проект".

  2. Разверните Visual C# или Visual Basic в левой области, а затем выберите "Рабочий стол Windows".

  3. В средней области выберите тип проекта приложения Windows Forms .

  4. Назовите проект SimpleControlWalkthrough и нажмите кнопку "ОК".

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

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

В этом пошаговом руководстве создается простой элемент управления с привязкой к данным из пользовательского элемента управления. Добавьте элемент пользовательского элемента управления в проект SimpleControlWalkthrough :

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

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

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

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

В этом пошаговом руководстве расширяются существующие MaskedTextBox, чтобы создать элемент управления PhoneNumberBox.

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

  2. Выберите смарт-тег на элементе MaskedTextBox, который вы только что перетащили, и выберите Задать маску.

  3. Выберите номер телефона в диалоговом окне "Маска ввода " и нажмите кнопку "ОК ", чтобы задать маску.

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

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

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

  2. Замените код в PhoneNumberBox следующим образом:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.DefaultBindingProperty("PhoneNumber")]
        public partial class PhoneNumberBox : UserControl
        {
            public string PhoneNumber
            {
                get{ return maskedTextBox1.Text; }
                set{ maskedTextBox1.Text = value; }
            }
    
            public PhoneNumberBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. В меню "Сборка" выберите " Создать решение".

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

На этом шаге мастер настройки источника данных используется для создания источника данных на основе таблицы в примере базы данных Northwind. Для создания подключения необходимо иметь доступ к образцу базы данных Northwind. Сведения о настройке примера базы данных Northwind см. в статье "Практическое руководство: Установка примеров баз данных".

  1. Чтобы открыть окно "Источники данных" , в меню "Данные " щелкните "Показать источники данных".

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

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

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

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

    • Нажмите кнопку "Создать подключение", чтобы запустить диалоговое окно "Добавить или изменить подключение ".

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

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

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

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

    NorthwindDataSet добавляется в проект, а Customers таблица появится в окне источников данных.

Настройка столбца телефона для использования элемента управления PhoneNumberBox

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

  1. Откройте Form1 в дизайнере.

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

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

  4. Щелкните стрелку раскрывающегося списка в столбце "Телефон" и выберите "Настроить".

  5. Выберите PhoneNumberBox из списка связанных элементов управления в диалоговом окне "Параметры настройки пользовательского интерфейса данных ".

  6. Щелкните стрелку раскрывающегося списка в столбце "Телефон" и выберите PhoneNumberBox.

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

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

Чтобы создать элементы управления с привязкой к данным в форме, перетащите основной узел Customers из окна источников данных в форму и убедитесь, что элемент управления PhoneNumberBox используется для отображения данных в столбце Phone .

Элементы управления с привязкой к данным с описательными метками отображаются в форме вместе с полосой инструментов (BindingNavigator) для навигации по записям. Объекты NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator отображаются в области компонентов.

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

Нажмите клавишу F5, чтобы запустить приложение.

Дальнейшие шаги

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