- Панель Toolbox в Visual Studio
- Настройка компонентов
- Добавление компонентов
- Создание Windows Forms элемента управления панели элементов Create a Windows Forms Toolbox Control
- Предварительные требования Prerequisites
- Создание элемента управления панели элементов Create the Toolbox Control
- Создание расширения с помощью Windows Forms элемента управления панели элементов Create an extension with a Windows Forms Toolbox Control
- Создание пользовательского интерфейса для элемента управления Build a user interface for the control
- Создание пользовательского интерфейса To build the user interface
- Код пользовательского элемента управления Code the user control
- Код пользовательского элемента управления To code the user control
- Тестирование элемента управления Test the control
- Тестирование элемента управления To test the control
Панель Toolbox в Visual Studio
Одно из основных преимуществ над другими интегрированными средами разработки состоит в том, что компания Microsoft предлагает пользователям реальную возможность перемещать элементы при проектировании как веб-, так и сложных клиентских приложений. Все эти элементы размещены в окне Toolbox ( Ctrl+Alt+X ), доступ к которому можно получить посредством меню View:
Окно Toolbox имеет интересное свойство: вы можете скопировать фрагмент кода в него, щелкнув на области кода и перетащив ее в окно Toolbox. Вы можете также переименовать и переупорядочить ваши фрагменты кода, сделав их действительно полезными для презентаций или хранения часто используемых фрагментов.
Окно Toolbox содержит все доступные компоненты для активного в данный момент документа, открытого в главном рабочем окне. Ими могут быть визуальные компоненты, например кнопки и текстовые поля; невидимые, сервисные объекты, например таймеры или регистрационные журналы системных событий; и даже элементы дизайна, такие как классы и интерфейсные объекты, используемые в инструменте Class Designer.
Система Visual Studio 2013 группирует доступные компоненты, а не смешивает их в одну кучу. Такая группировка по умолчанию позволяет проще находить требуемые элементы контроля; например, компоненты для работы с данными содержатся в отдельной группе Data.
По умолчанию эти группы представлены в виде списка. Каждый компонент представлен с помощью своей собственной пиктограммы и имеет название. Этим новая версия системы Visual Studio 2013 отличается от старого способа представления доступных объектов, в которых окно Toolbox просто представляло собой список пиктограмм, а пользователь должен был угадать, каким компонентам они соответствуют. Вы можете изменять представление каждой группы элементов управления по отдельности. Для этого щелкните правой кнопкой мыши в любом месте области, где расположена группа, и снимите флажок с команды List View в контекстном меню.
Независимо от представления компонентов способ их использования в программе остался прежним: щелкните и перетащите желаемый компонент на форму активного документа или дважды щелкните на компоненте в системе Visual Studio, чтобы автоматически добавить его экземпляр. Визуальные компоненты, такие как кнопки и текстовые поля, появляются на форме, после чего пользователь может перемещать их, изменять размеры или фиксировать с помощью свойств сетки. Невизуальные компоненты, такие как таймер, отображаются в виде пиктограмм с ассоциированными метками в области формы, предназначенной для невидимых компонентов.
В левом верхнем углу на самом первом рисунке показана группа GettingStarted Controls с единственным компонентом SampleButton. По существу, строка «GettingStarted» — это имя проекта WPF. Он содержит элемент управления SampleButton. Когда вы начинаете создавать свои собственные компоненты или элементы управления, то, вместо того, чтобы предоставить вам вручную создавать новую закладку и повторять весь процесс добавления каждого элемента, система Visual Studio 2013 автоматически просматривает все проекты вашего решения. Как только компоненты или элементы управления будут идентифицированы (т.е. будет распознан любой класс, реализующий компонент System.ComponentModel.IComponent или System.Windows.FrameworkElement для программной модели WPF), в проекте будет создана новая закладка, на которую будут добавлены соответствующие элементы с пиктограммами и именами классов, заданными по умолчанию, в данном случае SampleButton. Когда вы используете компонент, в области невидимых элементов появляется соответствующая пиктограмма.
Система Visual Studio 2013 просматривает все проекты в вашем решении и перед, и после построения решения. Если решение состоит из многих проектов, то этот процесс может занять много времени. В таком случае следует подумать об отключении этой возможности, установив свойство AutoToolboxPopulate узла Windows Forms Designer в диалоговом окне Options равным false (Tools —> Options).
Для того чтобы настроить внешний вид элементов в окне Toolbox, добавьте в проект ваш компонент или элемент в виде побитового изображения размером 16×16 пикселей. Затем выберите вновь вставленное побитовое изображение в окно Solution Explorer и перейдите к окну Properties. Убедитесь, что свойство Build установлено равным Embedded Resource. Теперь достаточно связать атрибут вашего элемента управления с атрибутом изображения ToolboxBitmap.
Следует отметить, что при настройке окна Toolbox и внешнего вида элементов управления в программной модели Windows Presentation Foundation (WPF) используется понятие хранилища метаданных, а не атрибуты. Обычно это приводит к появлению дополнительных сборок, которые можно использовать для уточнения внешнего вида элементов управления как в системе Visual Studio 2013, так и в системе Expression Blend.
Настройка компонентов
Перечисление элементов в окне Toolbox в алфавитном порядке — хороший вариант, принятый по умолчанию, поскольку он позволяет найти неизвестный пользователю элемент. Однако, если вы используете только несколько компонентов и вам надоело прокручивать список вверх и вниз, можете создать свои собственные группы элементов управления и переместить существующие типы объектов.
Перемещение отдельного компонента не составляет труда. Найдите его в окне Toolbox, щелкните на нем и перетащите в новое место. Когда достигнете пункта назначения, отпустите кнопку мыши, и компонент будет перемещен в новое место списка. Точно так же можете переместить компонент в другую группу — просто перетаскивайте его вверх или вниз по окну Toolbox, пока не окажетесь в нужной группе. Эти действия можно выполнять как с представлением List, так и с представлением Icon.
Если хотите скопировать компонент из одной группы в другую, а не переместить его, то в ходе перетаскивания удерживайте нажатой клавишу Ctrl . Иногда удобно иметь свою собственную группу, чтобы хранить в ней элементы управления и компоненты, которые используются чаще других. Для того чтобы создать новую группу в окне Toolbox, щелкните правой кнопкой мыши в любом месте окна Toolbox и выполните команду Add Tab. Внизу окна Toolbox будет добавлена новая пустая закладка, которой вы должны присвоить имя. После того как вы назовете закладку, добавьте в нее компоненты, следуя инструкциям, описанным в этом разделе.
Если вы впервые запускаете систему Visual Studio 2013, то элементы в каждой группе будут упорядочены по алфавиту. Однако после перемещения элементов вы можете обнаружить, что они перепутаны, и решите просто начать все сначала. Все, что вам для этого необходимо, — щелкнуть правой кнопкой мыши в группе и выполнить команду Sort Items Alphabetically.
По умолчанию элементы управления добавляются в окно Toolbox в порядке следования имен их классов. Это значит, что вы столкнетесь с непонятными именами, особенно, если захотите добавить в окно Toolbox элементы управления COM. Система Visual Studio 2013 позволяет пользователю изменять имена компонентов на что-нибудь более понятное.
Для того чтобы изменить имя компонента, щелкните правой кнопкой мыши в окне Toolbox и выполните команду Rename Item. На месте первоначального названия появится поле редактирования, в которое можете ввести удобное для вас имя, даже если оно содержит специальные символы.
Если же вы еще больше запутались, работая с компонентами из непривычных групп, и потеряли ориентацию, то выполните команду Reset Toolbox из того же самого контекстного меню, появляющегося после щелчка правой кнопкой мыши. Эта команда восстанавливает исходное состояние всех групп в окне Toolbox, причем компоненты сортируются по алфавиту и находятся в группах, которым принадлежали изначально.
Добавление компонентов
Иногда оказывается, что конкретный компонент, который вам нужен, отсутствует в списке Toolbox. Большинство основных компонентов .NET в этом списке есть, но некоторых нет. Например, компонент WebClient class в списке Toolbox по умолчанию не указан. Управляемые приложения могут также использовать компоненты COM. После добавления в окно Toolbox объекты COM могут быть использованы точно так же, как обычные компоненты .NET, и если они закодированы правильно, то вы можете программировать работу с ними как обычно, используя окно Properties и ссылаясь на их методы, свойства и события в своем коде.
Для того чтобы добавить компонент в свое окно Toolbox, щелкните правой кнопкой мыши на группе компонентов, в которую хотите добавить новый компонент, и выполните команду Choose Items. Через какое-то время (на медленном компьютере этот процесс может занять несколько секунд, потому что машина должна просмотреть кэш .NET, чтобы определить все возможные компоненты, которые можно выбрать) отобразится список .NET Framework components, как показано на рисунке ниже:
Помните: команда Reset Toolbox удаляет все группы команд, созданные пользователем, поэтому сначала убедитесь, что вам действительно необходимо выполнить эту функцию!
Просмотрите список, чтобы найти элемент, который хотите добавить в окно Toolbox, и установите соответствующий флажок. Можете также добавлять несколько элементов одновременно, выбирая их до того, как щелкнуть на кнопке ОК. В то же время можете удалять элементы из окна, сбрасывая соответствующие флажки в списке. Обратите внимание на то, что в этом случае соответствующие элементы удаляются из всех групп, которым они принадлежат, а не только из той группы, которую вы редактируете в данный момент.
Если вам покажется трудным найти требуемый элемент, воспользуйтесь текстовым полем Filter, фильтрующим список по имени, пространству имен и имени сборки. В редких ситуациях список может не содержать элемент вообще. Это может произойти с нестандартными компонентами, например, созданными вами или не зарегистрированными в кэше Global Assembly Cache (GAC). Вы по-прежнему можете добавить их, используя кнопку Browse, чтобы просмотреть реальные файлы на компьютере. Выбирая и отменяя выбор требуемого элемента, щелкните на кнопке ОК, чтобы сохранить настройки окна Toolbox.
Компоненты COM, WPF, Silverlight Components и Workflow Activities можно добавить точно так же. Просто щелкните на соответствующей закладке в диалоговом окне, чтобы увидеть список доступных, правильно зарегистрированных компонентов COM. Можете также использовать кнопку Browse, чтобы найти элементы управления, которых нет в списке.
Создание Windows Forms элемента управления панели элементов Create a Windows Forms Toolbox Control
Шаблон элемента элемента управления панели элементов Windows Forms, включенный в средства расширения Visual Studio (пакет VS SDK), позволяет создать элемент управления панели элементов , который автоматически добавляется при установке расширения. The Windows Forms Toolbox Control item template that is included in the Visual Studio Extensibility Tools (VS SDK), lets you create a Toolbox control that is automatically added when the extension is installed. В этом пошаговом руководстве показано, как использовать шаблон для создания простого элемента управления счетчика, который можно распространить другим пользователям. This walkthrough shows how to use the template to create a simple counter control that you can distribute to other users.
Предварительные требования Prerequisites
Начиная с Visual Studio 2015, пакет SDK для Visual Studio не устанавливается из центра загрузки. Starting in Visual Studio 2015, you do not install the Visual Studio SDK from the download center. Он входит в состав программы установки Visual Studio как дополнительный компонент. It is included as an optional feature in Visual Studio setup. Пакет SDK для VS можно установить и позже. You can also install the VS SDK later on. Дополнительные сведения см. в статье Установка пакета SDK для Visual Studio. For more information, see Install the Visual Studio SDK.
Создание элемента управления панели элементов Create the Toolbox Control
Шаблон элемента управления панели элементов Windows Forms создает неопределенный пользовательский элемент управления и предоставляет все функциональные возможности, необходимые для добавления элемента управления на панель элементов. The Windows Forms Toolbox Control template creates an undefined user control and provides all of the functionality that is required to add the control to the Toolbox.
Создание расширения с помощью Windows Forms элемента управления панели элементов Create an extension with a Windows Forms Toolbox Control
Создайте проект VSIX с именем MyWinFormsControl . Create a VSIX project named MyWinFormsControl . Шаблон проекта VSIX можно найти в диалоговом окне » Новый проект «, выполнив поиск по слову «VSIX». You can find the VSIX project template in the New Project dialog, by searching for «vsix».
После открытия проекта добавьте Windows Forms шаблон элемента элемента управления панели элементов с именем Counter . When the project opens, add a Windows Forms Toolbox Control item template named Counter . В Обозреватель решений щелкните правой кнопкой мыши узел проекта и выберите команду Добавить > новый элемент. In the Solution Explorer, right-click the project node and select Add > New Item. В диалоговом окне Добавление нового элемента перейдите в раздел расширяемость Visual C# > и выберите Windows Forms элемент управления панели элементов . In the Add New Item dialog, go to Visual C# > Extensibility and select Windows Forms Toolbox Control
При этом добавляется пользовательский элемент управления, ProvideToolboxControlAttribute RegistrationAttribute для размещения элемента управления в панели элементов, а также запись ресурса Microsoft. VisualStudio. тулбоксконтрол в манифесте VSIX для развертывания. This adds a user control, a ProvideToolboxControlAttribute RegistrationAttribute to place the control in the Toolbox, and a Microsoft.VisualStudio.ToolboxControl Asset entry in the VSIX manifest for deployment.
Создание пользовательского интерфейса для элемента управления Build a user interface for the control
Counter Элементу управления требуются два дочерних элемента управления: Label для вывода текущего счетчика и Button для сброса счетчика в значение 0. The Counter control requires two child controls: a Label to display the current count, and a Button to reset the count to 0. Другие дочерние элементы управления не требуются, так как вызывающие объекты увеличивают счетчик программным образом. No other child controls are required because callers will increment the counter programmatically.
Создание пользовательского интерфейса To build the user interface
В Обозреватель решений дважды щелкните Counter. CS , чтобы открыть его в конструкторе. In Solution Explorer, double-click Counter.cs to open it in the designer.
Удалите щелчком мыши. Remove the Click Here ! , которая включается по умолчанию при добавлении шаблона элемента элемента управления панели элементов Windows Forms. button that is included by default when you add the Windows Forms Toolbox Control item template.
Перетащите элемент управления с панели элементов, Label а затем Button элемент управления под ним в область конструктора. From the Toolbox, drag a Label control and then a Button control below it to the design surface.
Измените размер элемента управления «общий» на 150, 50 пикселей и измените размер элемента управления «Кнопка» на 50, 20 пикселей. Resize the overall user control to 150, 50 pixels, and resize the button control to 50, 20 pixels.
В окне Свойства задайте следующие значения для элементов управления в области конструктора. In the Properties window, set the following values for the controls on the design surface.
Control Control | Property (Свойство) Property | Значение Value |
---|---|---|
Label1 | TextText | «» «» |
Button1 | имя; Name | бтнресет btnReset |
Button1 | TextText | Reset Reset |
Код пользовательского элемента управления Code the user control
Counter Элемент управления предоставит метод для увеличения счетчика, событие, которое будет выдаваться при каждом увеличении счетчика, кнопку сброса и три свойства для хранения текущего числа, отображаемого текста, а также для отображения или скрытия кнопки сброса . The Counter control will expose a method to increment the counter, an event to be raised whenever the counter is incremented, a Reset button, and three properties to store the current count, the display text, and whether to show or hide the Reset button. Атрибут ProvideToolboxControl определяет место на панели элементов , в котором будет отображаться элемент управления Counter . The ProvideToolboxControl attribute determines where in the Toolbox the Counter control will appear.
Код пользовательского элемента управления To code the user control
Дважды щелкните форму, чтобы открыть обработчик событий Load в окне кода. Double-click the form to open its load event handler in the code window.
Над методом обработчика событий в классе Control создайте целое число, чтобы сохранить значение счетчика, и строку для хранения отображаемого текста, как показано в следующем примере. Above the event handler method, in the control class create an integer to store the counter value and a string to store the display text as shown in the following example.
Создайте следующие открытые объявления свойств. Create the following public property declarations.
Вызывающие объекты могут получить доступ к этим свойствам для получения и задания отображаемого текста счетчика, а также для отображения или скрытия кнопки Сброс . Callers can access these properties to get and set the display text of the counter and to show or hide the Reset button. Вызывающие объекты могут получить текущее значение свойства только для чтения Value , но не могут задавать значение напрямую. Callers can obtain the current value of the read-only Value property, but they cannot set the value directly.
Добавьте следующий код в Load событие для элемента управления. Put the following code in the Load event for the control.
Задание текста метки в Load событии позволяет загружать целевые свойства до применения их значений. Setting the Label text in the Load event enables the target properties to load before their values are applied. Установка текста метки в конструкторе приведет к пустой метке. Setting the Label text in the constructor would result in an empty Label.
Создайте следующий открытый метод для увеличения счетчика. Create the following public method to increment the counter.
Добавьте объявление Incremented события в класс Control. Add a declaration for the Incremented event to the control class.
Вызывающие объекты могут добавлять обработчики в это событие для реагирования на изменения значения счетчика. Callers can add handlers to this event to respond to changes in the value of the counter.
Вернитесь в режим конструктора и дважды щелкните кнопку Сброс , чтобы создать btnReset_Click обработчик событий. Return to design view and double-click the Reset button to generate the btnReset_Click event handler. Затем заполните его, как показано в следующем примере. Then, fill it in as shown in the following example.
Непосредственно над определением класса в объявлении атрибута ProvideToolboxControl измените значение первого параметра с «MyWinFormsControl.Counter» на «General» . Immediately above the class definition, in the ProvideToolboxControl attribute declaration, change the value of the first parameter from «MyWinFormsControl.Counter» to «General» . Таким образом задается имя группы элементов, в которой будет размещаться элемент управления на панели элементов. This sets the name of the item group that will host the control in the Toolbox.
В приведенном ниже примере показаны атрибут ProvideToolboxControl и скорректированное определение класса. The following example shows the ProvideToolboxControl attribute and the adjusted class definition.
Тестирование элемента управления Test the control
Чтобы протестировать элемент управления панели элементов , сначала протестируйте его в среде разработки, а затем протестируйте в скомпилированном приложении. To test a Toolbox control, first test it in the development environment and then test it in a compiled application.
Тестирование элемента управления To test the control
Нажмите клавишу F5 , чтобы начать отладку. Press F5 to Start Debugging.
Эта команда выполняет сборку проекта и открывает второй экспериментальный экземпляр Visual Studio с установленным элементом управления. This command builds the project and opens a second Experimental instance of Visual Studio that has the control installed.
В экспериментальном экземпляре Visual Studio создайте проект приложения Windows Forms . In the Experimental instance of Visual Studio, create a Windows Forms Application project.
В Обозреватель решений дважды щелкните Form1. CS , чтобы открыть его в конструкторе, если он еще не открыт. In Solution Explorer, double-click Form1.cs to open it in the designer if it is not already open.
На панели элементов Counter элемент управления должен отображаться в разделе Общие . In the Toolbox, the Counter control should be displayed in the General section.
Перетащите Counter элемент управления в форму, а затем выберите его. Drag a Counter control to your form, and then select it. Value Свойства, Message и ShowReset будут отображаться в окне Свойства вместе со свойствами, унаследованными от UserControl . The Value , Message , and ShowReset properties will be displayed in the Properties window, together with the properties that are inherited from UserControl.
Задайте для свойства Message значение Count: . Set the Message property to Count: .
Перетащите Button элемент управления в форму, а затем задайте для свойства Name и Text кнопки значение Test . Drag a Button control to the form, and then set the name and text properties of the button to Test .
Дважды щелкните кнопку, чтобы открыть форму Form1. CS в представлении кода и создать обработчик щелчка. Double-click the button to open Form1.cs in code view and create a click handler.
В обработчике щелчка вызовите counter1.Increment() . In the click handler, call counter1.Increment() .
В функции конструктора после вызова InitializeComponent Введите, counter1«.«Incremented += а затем дважды нажмите клавишу Tab . In the constructor function, after the call to InitializeComponent , type counter1«.«Incremented += and then press Tab twice.
Visual Studio создает обработчик на уровне формы для counter1.Incremented события. Visual Studio generates a form-level handler for the counter1.Incremented event.
Выделите Throw оператор в обработчике событий, введите mbox , а затем дважды нажмите клавишу Tab , чтобы создать окно сообщения из фрагмента кода Mbox. Highlight the Throw statement in the event handler, type mbox , and then press Tab twice to generate a message box from the mbox code snippet.
На следующей строке добавьте следующий if / else блок, чтобы задать видимость кнопки сброса . On the next line, add the following if / else block to set the visibility of the Reset button.
Нажмите клавишу F5. Press F5.
Откроется форма. The form opens. Counter Элемент управления отображает следующий текст. The Counter control displays the following text.
Число: 0 Count: 0
Выберите Тест. Select Test.
Счетчик увеличивается, и Visual Studio отображает окно сообщения. The counter increments and Visual Studio displays a message box.
Закройте окно сообщения. Close the message box.
Кнопка сброса исчезнет. The Reset button disappears.
Выберите тест , пока счетчик не достигнет 5 -закрывающих окон сообщений каждый раз. Select Test until the counter reaches 5 closing the message boxes each time.
Появится кнопка Сброс . The Reset button reappears.
Выберите Сброс. Select Reset.
Счетчик сбрасывается в значение 0. The counter resets to 0.