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


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

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

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

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

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

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

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

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

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

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

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

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

  2. Удалите кнопку Click Here !, включаемую по умолчанию при добавлении шаблона элемента управления Windows Forms.

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

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

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

    Контроль Свойство Ценность
    Label1 Текст ""
    Button1 имени btnReset
    Button1 текст Сброс

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

Элемент управления 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, Messageи ShowReset будут отображаться в окне Свойств вместе со свойствами, унаследованными от UserControl.

  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 TAB, чтобы создать поле сообщения из фрагмента кода mbox.

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

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

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

    число : 0

  14. Выберите Test.

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

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

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

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

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

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

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

Дальнейшие действия

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