Создание элемента управления панели элементов Windows Forms
Шаблон элемента управления панелью элементов Windows Forms, включенный в средства расширяемости Visual Studio (VS SDK), позволяет создать элемент управления панели элементов , который автоматически добавляется при установке расширения. В этом пошаговом руководстве показано, как использовать шаблон для создания простого элемента управления счетчиком, который можно распространять другим пользователям.
Создание элемента управления панели элементов
Шаблон элемента управления панелью элементов Windows Forms создает неопределенный пользовательский элемент управления и предоставляет все функциональные возможности, необходимые для добавления элемента управления в панель элементов.
Создание расширения с помощью элемента управления панели элементов Windows Forms
Создайте проект VSIX с именем
MyWinFormsControl
. Шаблон проекта VSIX можно найти в диалоговом окне "Новый проект ", выполнив поиск vsix.Когда откроется проект, добавьте шаблон элемента управления панелью элементов Windows Forms с именем
Counter
. Щелкните правой кнопкой мыши узел проекта в Обозревателе решений, а затем выберите Добавить>Новый элемент. В диалоговом окне "Добавление нового элемента" перейдите в Visual C#>Extensibility и выберите элемент управления панелью элементов Windows FormsПри этом добавляется пользовательский элемент управления,
ProvideToolboxControlAttribute
RegistrationAttribute а также элемент управления на панели элементов и запись ресурса Microsoft.VisualStudio.ToolboxControl в манифесте VSIX для развертывания.
Создание пользовательского интерфейса для элемента управления
Для Counter
элемента управления требуется два дочерних элемента управления: Label для отображения текущего числа, а Button также для сброса счетчика до 0. Другие дочерние элементы управления не требуются, так как вызывающие элементы будут увеличивать счетчик программным образом.
Создание пользовательского интерфейса
В Обозреватель решений дважды щелкните Counter.cs, чтобы открыть его в конструкторе.
Удалите кнопку "Нажать здесь ! ", включенную по умолчанию при добавлении шаблона элемента управления панелью элементов Windows Forms.
На панели элементов перетащите
Label
элемент управления, а затемButton
под ним в область конструктора.Измените размер общего пользовательского элемента управления на 150, 50 пикселей и измените размер элемента управления кнопки на 50, 20 пикселей.
В окне "Свойства" задайте следующие значения для элементов управления в области конструктора.
Элемент управления Свойство значение Label1
Text "" Button1
Имя btnReset Button1
Text Reset
Код пользовательского элемента управления
Элемент Counter
управления предоставляет метод для увеличения счетчика, событие, которое будет вызываться при добавочном добавлении счетчика, кнопке сброса и трех свойствах для хранения текущего счетчика, отображаемого текста и отображения или скрытия кнопки сброса. Атрибут ProvideToolboxControl
определяет место на панели элементов , в котором будет отображаться элемент управления Counter
.
Код пользовательского элемента управления
Дважды щелкните форму, чтобы открыть обработчик событий загрузки в окне кода.
Над методом обработчика событий в классе элемента управления создайте целое число для хранения значения счетчика и строки для хранения отображаемого текста, как показано в следующем примере.
int currentValue; string displayText;
Создайте следующие объявления общедоступного свойства.
public int Value { get { return currentValue; } } public string Message { get { return displayText; } set { displayText = value; } } public bool ShowReset { get { return btnReset.Visible; } set { btnReset.Visible = value; } }
Вызывающие могут получить и задать отображаемый текст счетчика, а также показать или скрыть кнопку сброса. Вызывающие пользователи могут получить текущее значение свойства только для
Value
чтения, но они не могут задать значение напрямую.Введите следующий код в
Load
событие для элемента управления.private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
Задание текста метки в Load событии позволяет целевым свойствам загружаться перед применением их значений. Задание текста Метки в конструкторе приведет к пустой метке.
Создайте следующий общедоступный метод, чтобы увеличить счетчик.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
Добавьте объявление для
Incremented
события в класс элемента управления.public event EventHandler Incremented;
Вызывающие могут добавлять обработчики в это событие, чтобы реагировать на изменения в значении счетчика.
Вернитесь к представлению конструктора и дважды щелкните кнопку сброса , чтобы создать
btnReset_Click
обработчик событий. Затем заполните его, как показано в следующем примере.private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; }
Непосредственно над определением класса в объявлении атрибута
ProvideToolboxControl
измените значение первого параметра с"MyWinFormsControl.Counter"
на"General"
. Таким образом задается имя группы элементов, в которой будет размещаться элемент управления на панели элементов.В приведенном ниже примере показаны атрибут
ProvideToolboxControl
и скорректированное определение класса.[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
Тестирование элемента управления
Чтобы протестировать элемент управления панели элементов , сначала протестируйте его в среде разработки, а затем протестируйте его в скомпилированном приложении.
Тестирование элемента управления
Нажмите клавишу F5 , чтобы начать отладку.
Эта команда создает проект и открывает второй экспериментальный экземпляр Visual Studio с установленным элементом управления.
В экспериментальном экземпляре Visual Studio создайте проект приложения Windows Forms.
В Обозреватель решений дважды щелкните Form1.cs, чтобы открыть его в конструкторе, если он еще не открыт.
На панели элементов элемент
Counter
управления должен отображаться в разделе "Общие".Перетащите элемент управления в
Counter
форму и выберите его. СвойстваValue
иShowReset
свойства будут отображаться в окне "Свойства" вместе со свойствами, унаследованными от UserControl.Message
Установите свойство
Message
в значениеCount:
.Перетащите Button элемент управления в форму, а затем задайте свойства имени и текста кнопки
Test
.Дважды щелкните кнопку, чтобы открыть Form1.cs в представлении кода и создать обработчик щелчка.
В обработчике щелчка вызовите
counter1.Increment()
.В функции конструктора после вызова
InitializeComponent
введитеcounter1``.``Incremented +=
и дважды нажмите клавишу TAB .Visual Studio создает обработчик уровня формы для
counter1.Incremented
события.Выделите инструкцию
Throw
в обработчике событий, введитеmbox
и дважды нажмите клавишу TAB , чтобы создать поле сообщения из фрагмента кода mbox.В следующей строке добавьте следующий
if
/else
блок, чтобы задать видимость кнопки сброса .if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
Нажмите клавишу F5.
Откроется форма. Элемент
Counter
управления отображает следующий текст.Число: 0
Выберите Тест.
Счетчик увеличивается и Visual Studio отображает окно сообщения.
Закройте окно сообщения.
Кнопка сброса исчезнет.
Выберите " Тестировать ", пока счетчик не достигнет 5 закрывающих полей сообщений каждый раз.
Кнопка "Сброс" снова появится.
Выберите Сброс.
Счетчик сбрасывается до 0.
Следующие шаги
При создании элемента управления панели элементов Visual Studio создает файл с именем Имя_проекта.vsix в папке \bin\debug\ проекта. Вы можете развернуть элемент управления, отправив VSIX-файл в сеть или на веб-сайт. Когда пользователь открывает VSIX-файл, элемент управления устанавливается и добавляется на панель элементов Visual Studio на компьютере пользователя. Кроме того, можно отправить VSIX-файл в Visual Studio Marketplace, чтобы пользователи могли его найти, перейдя в диалоговое окно "Расширения инструментов>" и Обновления.