Создание элемента управления панели элементов Windows Forms

Шаблон элемента управления панелью элементов Windows Forms, включенный в средства расширяемости Visual Studio (VS SDK), позволяет создать элемент управления панели элементов , который автоматически добавляется при установке расширения. В этом пошаговом руководстве показано, как использовать шаблон для создания простого элемента управления счетчиком, который можно распространять другим пользователям.

Создание элемента управления панели элементов

Шаблон элемента управления панелью элементов Windows Forms создает неопределенный пользовательский элемент управления и предоставляет все функциональные возможности, необходимые для добавления элемента управления в панель элементов.

Создание расширения с помощью элемента управления панели элементов Windows Forms

  1. Создайте проект VSIX с именем MyWinFormsControl. Шаблон проекта VSIX можно найти в диалоговом окне "Новый проект ", выполнив поиск vsix.

  2. Когда откроется проект, добавьте шаблон элемента управления панелью элементов Windows Forms с именем Counter. Щелкните правой кнопкой мыши узел проекта в Обозревателе решений, а затем выберите Добавить>Новый элемент. В диалоговом окне "Добавление нового элемента" перейдите в Visual C#>Extensibility и выберите элемент управления панелью элементов Windows Forms

  3. При этом добавляется пользовательский элемент управления, ProvideToolboxControlAttributeRegistrationAttribute а также элемент управления на панели элементов и запись ресурса Microsoft.VisualStudio.ToolboxControl в манифесте VSIX для развертывания.

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

Для Counter элемента управления требуется два дочерних элемента управления: Label для отображения текущего числа, а Button также для сброса счетчика до 0. Другие дочерние элементы управления не требуются, так как вызывающие элементы будут увеличивать счетчик программным образом.

Создание пользовательского интерфейса

  1. В Обозреватель решений дважды щелкните Counter.cs, чтобы открыть его в конструкторе.

  2. Удалите кнопку "Нажать здесь ! ", включенную по умолчанию при добавлении шаблона элемента управления панелью элементов Windows Forms.

  3. На панели элементов перетащите Label элемент управления, а затем Button под ним в область конструктора.

  4. Измените размер общего пользовательского элемента управления на 150, 50 пикселей и измените размер элемента управления кнопки на 50, 20 пикселей.

  5. В окне "Свойства" задайте следующие значения для элементов управления в области конструктора.

    Элемент управления Свойство значение
    Label1 Text ""
    Button1 Имя btnReset
    Button1 Text Reset

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

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

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

  1. Дважды щелкните форму, чтобы открыть обработчик событий загрузки в окне кода.

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

    int currentValue;
    string displayText;
    
  3. Создайте следующие объявления общедоступного свойства.

    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 чтения, но они не могут задать значение напрямую.

  4. Введите следующий код в Load событие для элемента управления.

    private void Counter_Load(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = Message + Value;
    }
    
    

    Задание текста метки в Load событии позволяет целевым свойствам загружаться перед применением их значений. Задание текста Метки в конструкторе приведет к пустой метке.

  5. Создайте следующий общедоступный метод, чтобы увеличить счетчик.

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
    
  6. Добавьте объявление для Incremented события в класс элемента управления.

    public event EventHandler Incremented;
    

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

  7. Вернитесь к представлению конструктора и дважды щелкните кнопку сброса , чтобы создать btnReset_Click обработчик событий. Затем заполните его, как показано в следующем примере.

    private void btnReset_Click(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = displayText + Value;
    }
    
    
  8. Непосредственно над определением класса в объявлении атрибута ProvideToolboxControl измените значение первого параметра с "MyWinFormsControl.Counter" на "General". Таким образом задается имя группы элементов, в которой будет размещаться элемент управления на панели элементов.

    В приведенном ниже примере показаны атрибут ProvideToolboxControl и скорректированное определение класса.

    [ProvideToolboxControl("General", false)]
    public partial class Counter : UserControl
    

Тестирование элемента управления

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

Тестирование элемента управления

  1. Нажмите клавишу F5 , чтобы начать отладку.

    Эта команда создает проект и открывает второй экспериментальный экземпляр Visual Studio с установленным элементом управления.

  2. В экспериментальном экземпляре Visual Studio создайте проект приложения Windows Forms.

  3. В Обозреватель решений дважды щелкните Form1.cs, чтобы открыть его в конструкторе, если он еще не открыт.

  4. На панели элементов элемент Counter управления должен отображаться в разделе "Общие".

  5. Перетащите элемент управления в Counter форму и выберите его. Свойства Valueи ShowReset свойства будут отображаться в окне "Свойства" вместе со свойствами, унаследованными от UserControl. Message

  6. Установите свойство Message в значение Count:.

  7. Перетащите Button элемент управления в форму, а затем задайте свойства имени и текста кнопки Test.

  8. Дважды щелкните кнопку, чтобы открыть Form1.cs в представлении кода и создать обработчик щелчка.

  9. В обработчике щелчка вызовите counter1.Increment().

  10. В функции конструктора после вызова InitializeComponentвведите counter1``.``Incremented += и дважды нажмите клавишу TAB .

    Visual Studio создает обработчик уровня формы для counter1.Incremented события.

  11. Выделите инструкцию Throw в обработчике событий, введите mboxи дважды нажмите клавишу TAB , чтобы создать поле сообщения из фрагмента кода mbox.

  12. В следующей строке добавьте следующий if/else блок, чтобы задать видимость кнопки сброса .

    if (counter1.Value < 5) counter1.ShowReset = false;
    else counter1.ShowReset = true;
    
  13. Нажмите клавишу F5.

    Откроется форма. Элемент Counter управления отображает следующий текст.

    Число: 0

  14. Выберите Тест.

    Счетчик увеличивается и Visual Studio отображает окно сообщения.

  15. Закройте окно сообщения.

    Кнопка сброса исчезнет.

  16. Выберите " Тестировать ", пока счетчик не достигнет 5 закрывающих полей сообщений каждый раз.

    Кнопка "Сброс" снова появится.

  17. Выберите Сброс.

    Счетчик сбрасывается до 0.

Следующие шаги

При создании элемента управления панели элементов Visual Studio создает файл с именем Имя_проекта.vsix в папке \bin\debug\ проекта. Вы можете развернуть элемент управления, отправив VSIX-файл в сеть или на веб-сайт. Когда пользователь открывает VSIX-файл, элемент управления устанавливается и добавляется на панель элементов Visual Studio на компьютере пользователя. Кроме того, можно отправить VSIX-файл в Visual Studio Marketplace, чтобы пользователи могли его найти, перейдя в диалоговое окно "Расширения инструментов>" и Обновления.