Панель инструментов
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Окно панели элементов отображает элементы управления, которые вы можете добавлять в проекты Visual Studio. Чтобы открыть панель элементов, выберите Вид>Панель элементов в строке меню или нажмите клавиши CTRL+ALT+X.

Можно перетаскивать различные элементы управления на поверхность используемого конструктора, а также изменять размер и положение элементов управления.
Панель элементов отображается вместе с представлениями конструктора, например представлением XAML-файла или проектом приложения Windows Forms. На панели элементов отображаются только те элементы управления, которые можно использовать в текущем конструкторе. Вы можете выполнить поиск в пределах панели элементов, чтобы отфильтровать отображаемые элементы.
Для некоторых типов проектов панель элементов не содержит никаких элементов.
Целевая версия .NET проекта также влияет на набор элементов управления, отображаемых на панели элементов. При необходимости вы можете изменить требуемую версию .NET Framework на страницах свойств проекта. Выберите узел проекта в обозревателе решений, а затем в строке меню выберите Проект>Свойства имя_проекта. На вкладке Приложение выберите нужное значение в выпадающем списке Целевая платформа.

Управление окном панели элементов и элементами управления в нем
По умолчанию панель элементов свернута в левой части Visual Studio. Чтобы отобразить ее, наведите на нее курсор. Вы можете закрепить панель элементов, щелкнув на панели инструментов значок Закрепить, чтобы она оставалась открытой. Вы также можете открепить окно панели элементов и перетащить его в любое место на экране. Чтобы закрепить, открепить или скрыть панель элементов, щелкните ее правой кнопкой и выберите нужное действие.
Если панель элементов больше не отображается как свернутая в левой части интегрированной среды разработки Visual Studio, можно добавить ее обратно, выбрав Окно>Сбросить макет окна в строке меню.
Вы можете изменить порядок элементов на вкладке Панель элементов или добавить собственные вкладки, используя следующие команды в контекстном меню:
- Переименовать элемент. Переименование выбранного элемента.
- Представление списка. Отображение элементов управления в вертикальном списке. Если этот флажок не установлен, элементы управления размещаются горизонтально.
- Показать все. Отображение всех возможных элементов управления (не только тех, которые можно использовать в текущем конструкторе).
- Выбрать элементы. Открывает диалоговое окно Выбор элементов панели элементов, в котором можно указать элементы, отображаемые на панели элементов. Вы можете показать или скрыть элемент, установив или сняв его флажок.
- Сортировать элементы по алфавиту. Сортировка элементов по имени.
- Сброс панели. Восстановление параметров и элементов по умолчанию для панели элементов.
- Добавить вкладку. Добавление новой вкладки на панель элементов.
- Вверх. Перемещение выбранного элемента вверх.
- Вниз. Перемещение выбранного элемента вниз.
Создание и распространение пользовательских элементов управления панели элементов
Вы можете создать для панели элементов пользовательский элемент управления с помощью шаблона проекта на основе Windows Presentation Foundation или Windows Forms. Затем этот пользовательский элемент управления можно предоставить коллегам или опубликовать в Интернете с помощью установщика элементов управления панели элементов.
Следующие шаги
Перейдя по следующим ссылкам, вы узнаете о некоторых доступных вкладках панели элементов.
- Панель элементов, вкладка «Данные»
- Панель элементов, вкладка «Компоненты»
- Вкладка «HTML», панель элементов
См. также
Панель элементов, вкладка «Компоненты»
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Отображает компоненты, которые можно добавить в конструкторы Visual Basic и C# для Windows Forms. В дополнение к компонентам .NET, которые входят в состав Visual Studio (например, MessageQueue и EventLog), на этой вкладке можно добавить собственные или сторонние компоненты.
Чтобы отобразить эту вкладку, откройте конструктор Windows Forms. Выберите Представление>Панель элементов. На панели элементов выберите вкладку Компоненты.
Компоненты
BackgroundWorker
Создает экземпляр компонента BackgroundWorker, который может выполнять операцию в отдельном выделенном потоке. Дополнительную информацию см. в разделе Компонент BackgroundWorker.
DirectoryEntry
Создает экземпляр компонента DirectoryEntry, который инкапсулирует узел или объект в иерархии Active Directory и может использоваться для взаимодействия с поставщиками служб Active Directory.
DirectorySearcher
Создает экземпляр компонента DirectorySearcher, который можно использовать для выполнения запросов к Active Directory.
ErrorProvider
Создает экземпляр компонента ErrorProvider, который указывает конечному пользователю, что с элементом управления в форме связана ошибка. Дополнительную информацию см. в разделе Компонент ErrorProvider.
EventLog
Создает экземпляр компонента EventLog, который можно использовать для взаимодействия с системой и пользовательскими журналами событий, включая запись событий в журнал и чтения данных журнала.
FileSystemWatcher
Создает экземпляр компонента FileSystemWatcher, который можно использовать для отслеживания изменений в любом каталоге или файле, к которому имеется доступ.
HelpProvider
Создает экземпляр компонента HelpProvider, который обеспечивает для элементов управления всплывающее окно справки или окно оперативной справки. Дополнительную информацию см. в разделе Компонент HelpProvider.
ImageList
Создает экземпляр компонента ImageList, который предоставляет методы для управления коллекцией объектов Image. Дополнительную информацию см. в разделе Компонент ImageList.
MessageQueue
Создает экземпляр компонента MessageQueue, который можно использовать для взаимодействия с очередями сообщений, включая чтение сообщений из очередей и запись их туда, обработка транзакций и выполнение задач администрирования очередей.
PerformanceCounter
Создает экземпляр компонента PerformanceCounter, который можно использовать для взаимодействия со счетчиками производительности Windows, включая создание новых категорий и экземпляров, чтения значений из счетчиков и выполнения вычислений на основе данных счетчиков.
Обработать
Создает экземпляр компонента Process, который можно использовать для остановки, запуска и изменения данных, связанных с процессами в системе.
SerialPort
Создает экземпляр компонента SerialPort, который предоставляет средства для синхронного и управляемого событиями ввода-вывода, доступа к состоянию подключения-отключения устройства, а также для доступа к свойствам драйвера последовательного порта.
ServiceController
Создает экземпляр компонента ServiceController, который можно использовать для управления существующими службами, включая запуск и остановку служб, а также передачу им команд.
Таймер
Создает экземпляр компонента Timer, который можно использовать для добавления функций на основе времени для Windows-приложений. Дополнительную информацию см. в разделе Компонент Timer.
Существует также системный Timer, который можно добавить на панель элементов. Этот компонент Timer оптимизирован для серверных приложений и Windows Forms. Timer лучше всего подходит для использования в формах Windows Forms.
См. также
- Элементы управления для использования в Windows Forms
- Выбор элементов панели элементов — компоненты WPF
- Панель элементов
Настройка элементов и панели элементов
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Для тех элементов, которые пользователи смогут добавлять в свои модели, необходимо определить содержание панели элементов. Панель элементов может содержать два вида средств: средства элемента и средства подключения. В созданном конструкторе пользователь может выбрать средство элемента, чтобы перетащить фигуры на схему, и средство подключения, чтобы протянуть связи между фигурами. В целом средства элемента позволяют пользователям добавлять в модели экземпляры классов доменов, а средства подключения — экземпляры доменных связей.
Определение панели элементов
В Обозревателе DSL разверните узел «Редактор» и узлы под ним. Обычно при этом отрывается иерархия следующего вида:
Editor Toobox Tabs MyDsl //a tab Tools ExampleElement // an element tool ExampleRelationship // a connection tool
В этой части Обозревателя DSL можно выполнять следующие действия.
- Создавать новые таблицы. Вкладки определяют заголовки разделов в панели элементов.
- Создавать новые средства.
- Копировать и вставлять средства.
- Перемещать средства вверх или вниз по списку.
- Удалять вкладки и средства.
Чтобы добавить или вставить элементы в Обозреватель DSL, щелкните прародителя нового узла правой кнопкой мыши. Например, чтобы добавить средство, щелкните правой кнопкой мыши вкладку, а не узел «Сервис «. Чтобы добавить вкладку, щелкните правой кнопкой мыши узел редактора .
Свойство «Значок панели элементов» каждого средства ссылается на файл растрового изображения 16×16. Эти файлы обычно хранятся в папке Dsl\Resources .
Свойство Class средства элемента относится к конкретному классу домена. По умолчанию средство будет создавать экземпляры данного класса. Тем не менее можно написать код, заставляющий средство создавать элементы или группы элементов другого типа.
Свойство Подключение ion Builder средства подключения относится к построителю соединений, который определяет типы элементов, которые средство может подключать, и какие связи он создает между ними. Построители подключений определяются в виде узлов в Обозревателе DSL. Построители подключений создаются автоматически при определении доменных связей, но могут также настраиваться с помощью кода.
Добавление средства в панель элементов
- Средство элемента обычно создают после создания класса фигуры и его сопоставления с классом домена. Средство подключения обычно создают после создания класса соединителя и его сопоставления со ссылочным отношением.
- В Обозреватель DSL разверните узел редактора и узел вкладок панели элементов. Щелкните правой кнопкой мыши узел вкладки панели элементов и выберите команду «Добавить новый элемент» или «Добавить новое средство Подключение ion».
- Задайте свойство «Значок панели элементов», чтобы ссылаться на растровое изображение 16×16. Если вы хотите определить новый значок, создайте файл растрового изображения в Обозреватель решений в папке Dsl\Resources. Файл должен иметь следующие значения свойств: Build Action= Content; Копирование в выходной каталог = не копируется.
- Для инструмента элемента: задайте свойство Class средства, чтобы ссылаться на конкретный класс домена, сопоставленный с фигурой. Для средства соединителя: задайте свойству Подключение ion Builder средства одно из элементов, предлагаемых в раскрывающемся списке. Построители подключений автоматически создаются при сопоставлении соединителя с доменной связью. Сразу после создания соединителя, как правило, выбирается соответствующий построитель подключений.
- Чтобы протестировать DSL, нажмите клавишу F5 или CTRL+F5, а в экспериментальном экземпляре Visual Studio откройте пример файла модели. На панели элементов должно появиться новое средство. Перетащите его на схему, чтобы проверить, создает ли оно новый элемент. Если средство не отображается, остановите экспериментальную visual Studio. В меню «Пуск Windows» выполните сброс экспериментального экземпляра Microsoft Visual Studio 2010. В меню Построить выберите пункт Перестроить решение. Затем проверьте DSL еще раз.
Настройка средств элемента
По умолчанию средство создает один экземпляр указанного класса, но это можно изменять двумя описанными ниже способами.
- Определить директивы слияния элемента с другими классами, позволив им принимать новые экземпляры этого класса и создавать дополнительные ссылки при создании нового элемента. Например, можно разрешить пользователю оставить комментарий на другой элемент и тем самым создать между ними справочную ссылку. Эти настройки также влияют на процесс вставки и перетаскивания элемента. Дополнительные сведения см. в разделе «Настройка создания и перемещения элементов».
- Написать код, чтобы настроить средство на возможность создания групп элементов. Средство запускается методами из файла ToolboxHelper.cs, которые можно переопределить. Дополнительные сведения см. в разделе «Создание групп элементов» из средства.
Создание групп элементов из инструмента
Каждое средство элемента содержит прототип элементов, которые оно должно создавать. По умолчанию, каждое средство элемента создает один элемент, но может также создавать группу объектов, связанных с одним средством. Для этого запустите средство с помощью класса ElementGroupPrototype, который содержит связанные элементы.
Следующий пример взят из DSL, в котором есть тип «Транзистор». Каждый транзистор имеет три именованных контакта. Средство элемента для транзисторов хранит прототип, содержащий четыре элемента модели и три ссылки отношения. Когда пользователь перетаскивает средство на схему, создается экземпляр прототипа, который связывается с корнем модели.
Этот код переопределяет метод, определенный в dsl\GeneratedCode\ToolboxHelper.cs.
Дополнительные сведения о настройке модели с помощью кода программы см. в статье «Навигация и обновление модели в коде программы».
using Microsoft.VisualStudio.Modeling; using Microsoft.VisualStudio.Modeling.Diagrams; public partial class CircuitsToolboxHelper < /// /// Toolbox initialization, called for each element tool on the toolbox. /// This version deals with each Component subtype separately. /// /// /// Identifies the domain class this tool should instantiate. /// prototype of the object or group of objects to be created by tool protected override ElementGroupPrototype CreateElementToolPrototype(Store store, Guid domainClassId) < if (domainClassId == Transistor.DomainClassId) < Transistor transistor = new Transistor(store); transistor.Base = new ComponentTerminal(store); transistor.Collector = new ComponentTerminal(store); transistor.Emitter = new ComponentTerminal(store); transistor.Base.Name = "base"; transistor.Collector.Name = "collector"; transistor.Emitter.Name = "emitter"; // Create an ElementGroup for the Toolbox. ElementGroup elementGroup = new ElementGroup(store.DefaultPartition); elementGroup.AddGraph(transistor, true); // AddGraph includes the embedded parts return elementGroup.CreatePrototype(); >else < return base.CreateElementToolPrototype(store, domainClassId); >> >
Настройка средств Подключение ion
Как правило, средство элемента создается при создании нового класса соединителя. Кроме того, можно переопределить одно средство, разрешив типам и обеих сторон определять тип отношения. Например, можно определить одно средство подключения, которое может создавать как отношения типа «человек — человек», так и отношения типа «человек — город».
Средства подключения вызывают построители подключения. Используйте построители подключения, чтобы указать, каким образом пользователи могут связывать элементы в сгенерированном конструкторе. Построители подключений указывают элементы, которые могут быть связаны, а также создаваемый между ними тип связи.
При создании ссылочного отношения между доменными классами автоматически создается построитель подключения, который можно использовать при сопоставлении средства подключения. Дополнительные сведения о создании средств подключения см. в разделе «Настройка панели элементов».
Построитель подключения по умолчанию можно изменить так, чтобы он мог справляться с другим диапазоном исходных и целевых типов, а также создавать различные типы отношений.
Также, для построителей подключения можно написать пользовательский код, чтобы указать исходные и целевые классы для подключения, определить тип создаваемого подключения, и выполнить другие действия, связанные с созданием подключения.
Структура построителей подключения
Построители подключений содержат одну или несколько директив подключения связей, которые определяют доменные связи, а также исходные и целевые элементы. Например, в шаблоне решения потока задач можно увидеть КомментарийReferencesSubjectsBuilder в Обозреватель DSL. Этот построитель подключений содержит одну директиву connect link connect с именем CommentReferencesSubjects, которая сопоставляется с связью домена CommentReferencesSubjects. Эта директива подключения связи содержит директиву исходной роли, указывающую на класс домена Comment , и директиву целевой роли, указывающую на класс домена FlowElement .
Использование построителей подключений для ограничения ограниченным исходных и целевых ролей
Построители подключений можно использовать для ограничения вхождения некоторых классов в исходную или в целевую роль определенной доменной связи. Например, у вас есть базовый класс домена, имеющий доменную связь с другим классом домена, но вы не хотите, чтобы все производные этого базового класса получали в этой связи те же самые роли. В решении потока задач есть четыре конкретных класса домена (StartPoint, EndPoint, MergeBranch и Синхронизация), которые наследуются непосредственно от абстрактного класса FlowElement и двух конкретных классов доменов (Task и ObjectInState), которые наследуются косвенно от него. Существует также ссылочная связь Flow, которая принимает классы домена FlowElement как в исходной роли, так и в целевой роли. Однако экземпляр класса домена EndPoint не должен быть источником связи Flow , а экземпляр класса StartPoint — целевым объектом связи Flow . Построитель подключений FlowBuilder имеет директиву подключения по ссылке с именем Flow, которая указывает, какие классы домена могут играть исходную роль (Task, MergeBranch, StartPoint и Синхронизация) и которая может играть целевую роль (MergeBranch, Endpoint и Synchronization).
Построители подключений с несколькими директивами подключения связи
К построителю подключений можно добавить несколько директив подключения связи. Это поможет скрыть некоторые сложности модели домена от пользователей и сохранить панель элементов от слишком загроможденного. К одному построителю подключений можно добавить директивы подключения связи для нескольких различных отношений домена. При этом доменные связи следует объединять в том случае, если они выполняют примерно одинаковую функцию.
В решении потока задач средство подключения потока используется для рисования экземпляров связей потока и домена ObjectFlow . Построитель подключений FlowBuilder содержит директиву подключения потока, описанную ранее, две директивы подключения канала с именем ObjectFlow. Эти директивы указывают, что экземпляр связи ObjectFlow может быть нарисован между экземплярами класса домена ObjectInState или из экземпляра ObjectInState в экземпляр задачи, но не между двумя экземплярами задачи или от экземпляра задачи к экземпляру ObjectInState. Однако экземпляр связи потока может быть нарисован между двумя экземплярами задачи. При компиляции и запуске решения потока задач можно увидеть, что рисование потока из экземпляра ObjectInState в экземпляр задачи создает экземпляр ObjectFlow, но рисование потока между двумя экземплярами задачи создает экземпляр потока.
Пользовательский код для построителей подключения
В пользовательском интерфейсе имеются четыре флажка, определяющие различные типы настройки построителей подключений:
- Поле «Пользовательское принятие проверка» в директиве исходной или целевой роли
- Поле «Настраиваемый проверка подключения» в директиве исходной или целевой роли
- Поле «Использование настраиваемого подключения проверка в директиве connect«
- Свойство Is Custom построителя подключений Чтобы указать эти настройки, необходимо предоставить определенный программный код. Чтобы узнать, какой код необходимо предоставить, установите один их этих флажков, нажмите кнопку «Преобразовать все шаблоны» и постройте собственное решение. В результате будет получено сообщение об ошибке. Дважды щелкните сообщение об ошибке, чтобы увидеть комментарий с описанием кода, который необходимо добавить.
Чтобы добавить пользовательский код, создайте определение разделяемого класса в файле кода отдельно от файлов кода, находящихся в папках GeneratedCode. Чтобы не потерять свою работу, не изменяйте созданные файлы кода. Дополнительные сведения см. в разделе «Переопределение и расширение созданных классов».
Создание пользовательского кода подключения
В каждой директиве подключения ссылки вкладка «Директивы исходной роли» определяет из типов, которые можно перетаскивать. Аналогичным образом, вкладка «Директивы целевой роли» определяет, какие типы можно перетаскивать. Для каждого типа можно дополнительно указать, разрешать ли подключение (для этой директивы подключения ссылки), задав флаг custom Accept , а затем укажите дополнительный код.
Также можно настроить действия, происходящие после выполнения подключения. Например, можно настроить только случай перетаскивания в определенный класс, все случаи, когда приоритетное значение имеет одна директива подключения связи, или весь построитель подключения FlowBuilder. Для каждого из этих вариантов можно установить пользовательские флажки на соответствующем уровне. При преобразовании всех шаблонов и попытке построить решение вы получите сообщения об ошибках с комментариями к созданному коду. В этих комментариях указывается, что необходимо предоставить.
В примере «Схема компонентов» построитель подключения для доменной связи «Подключение» ограничивает подключения, которые могут быть установлены между портами. На следующей иллюстрации показано, что подключения можно установить только от элементов OutPort к элементам InPort , но компоненты можно вкладывать друг в друга.
Подключение входить в outPort из вложенного компонента

В связи с этим необходимо указать, что подключение может идти от вложенного компонента к типу OutPort. Чтобы указать такое подключение, задайте для типа InPort custom Accept в качестве исходной роли и типа OutPort в качестве целевой роли в окне сведений DSL, как показано на следующих рисунках:
Директива Подключение связи в DSL Обозреватель

Директива Подключение ссылки в окне сведений DSL

После этого в класс ConnectionBuilder необходимо предоставить методы:
public partial class ConnectionBuilder < /// /// OK if this component has children /// private static bool CanAcceptInPortAsSource(InPort candidate) < return candidate.Component.Children.Count >0; > /// /// Only if source is on parent of target. /// private static bool CanAcceptInPortAndInPortAsSourceAndTarget (InPort sourceInPort, InPort targetInPort) < return sourceInPort.Component == targetInPort.Component.Parent; >// And similar for OutPorts.
Дополнительные сведения о настройке модели с помощью кода программы см. в статье «Навигация и обновление модели в коде программы».
Подобный код можно использовать, например, для того, чтобы запретить пользователям создавать циклы со связями между родительскими и дочерними объектами. Эти ограничения считаются жесткими, так как пользователи не могут нарушать их в любое время. Кроме того, можно создать «обратимую» проверку проверка, которые пользователи могут временно обходить, создавая недопустимые конфигурации, которые они не могут сохранить.
Рекомендации по определению построителей подключений
Чтобы создаваемые типы отношений были концептуально связаны, настраивайте только один построитель подключений. В примере с задачей потока (Task Flow) для создания потоков между задачами, а также между задачами и объектами используется один и тот же построитель. В то же время использование одного и того же построителя для создания отношений между комментариями и задачами может создавать путаницу.
Определяя построитель подключений для нескольких типов отношений, обязательно убедитесь, что он не может сопоставить больше одного типа из одной той же пары исходных и целевых объектов. В противном случае результаты будут непредсказуемы.
Вы используете пользовательский код для применения жестких ограничений, но следует учитывать, должны ли пользователи временно выполнять недопустимые подключения. Если такую возможность необходимо предоставить, ограничения можно изменить таким образом, чтобы эти подключения не проверялись до тех пор, пока пользователи не попытаются сохранить изменения.
См. также
- Настройка создания и перемещения элементов
- Настройка функции копирования
- Практическое руководство. Добавление обработчика перетаскивания
- Перемещение по модели и обновление модели в коде программы
- Пример DSL схемы каналов
Обработка события элемента управления (Windows Forms .NET)
События для элементов управления (и для форм) обычно задаются с помощью визуального конструктора Visual Studio для Windows Forms. Настройка события с помощью визуального конструктора называется обработкой события во время разработки. Вы также можете динамически обрабатывать события в коде — это называется обработкой событий во время выполнения. Событие, созданное во время выполнения, позволяет динамически подключать обработчики событий на основе текущих действий приложения.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Обработка события — конструктор
В Visual Studio используйте визуальный конструктор для управления обработчиками событий элементов управления. Визуальный конструктор создаст код обработчика и добавит его в событие.
Установка обработчика
Используйте панель Свойства, чтобы добавить или задать обработчик события:
- Откройте визуальный конструктор формы, содержащей элемент управления, который нужно изменить.
- Выберите элемент управления.
- Измените режим панели Свойства на События, нажав кнопку событий (
). - Найдите событие, к которому нужно добавить обработчик, например событие Click:

- Выполните одно из следующих действий.
- Дважды щелкните событие, чтобы создать новый обработчик. Оно пусто, если обработчик не назначен. Если оно не пусто, это действие открывает код формы и переходит к существующему обработчику.
- Используйте поле выбора (
) для выбора существующего обработчика. В поле выбора будут перечислены все методы, имеющие совместимую сигнатуру метода для обработчика событий.
Очистка обработчика
Чтобы удалить обработчик событий, нельзя просто удалить код обработчика, который находится в файле кода программной части формы, на него по-прежнему ссылается событие. Используйте панель Свойства, чтобы удалить обработчик события:
- Откройте визуальный конструктор формы, содержащей элемент управления, который нужно изменить.
- Выберите элемент управления.
- Измените режим панели Свойства на События, нажав кнопку событий (
). - Найдите событие, содержащее обработчик, который требуется удалить, например событие Click:

- Щелкните событие правой кнопкой мыши и выберите Сбросить.
Обработка события — код
Обычно обработчики событий добавляются в элементы управления во время разработки с помощью визуального конструктора. Однако, можно создавать элементы управления во время выполнения, что требует добавления обработчиков событий в код. Добавление обработчиков в код также дает возможность добавить несколько обработчиков в одно и то же событие.
Добавление обработчика
В следующем примере показано, как создать элемент управления и добавить обработчик событий. Этот элемент управления создается в обработчике событий Button.Click другой кнопкой. При нажатии Кнопки1. Код перемещает новую кнопку и изменяет ее размер. Событие новой кнопки Click обрабатывается методом MyNewButton_Click . Чтобы появилась новая кнопка, она добавляется в коллекцию формы Controls . Существует также код для удаления обработчика события Button1.Click , который рассматривается в разделе Удаление обработчика.
private void button1_Click(object sender, EventArgs e) < // Create and add the button Button myNewButton = new() < Location = new Point(10, 10), Size = new Size(120, 25), Text = "Do work" >; // Handle the Click event for the new button myNewButton.Click += MyNewButton_Click; this.Controls.Add(myNewButton); // Remove this button handler so the user cannot do this twice button1.Click -= button1_Click; > private void MyNewButton_Click(object sender, EventArgs e)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Create and add the button Dim myNewButton As New Button() With 'Handle the Click event for the new button AddHandler myNewButton.Click, AddressOf MyNewButton_Click Me.Controls.Add(myNewButton) 'Remove this button handler so the user cannot do this twice RemoveHandler Button1.Click, AddressOf Button1_Click End Sub Private Sub MyNewButton_Click(sender As Object, e As EventArgs) End Sub
Чтобы выполнить этот код, выполните следующие действия в форме с помощью визуального конструктора Visual Studio:

- Добавьте новую кнопку в форму и назовите ее Кнопка1.
- Измените режим панели Свойства на События, нажав кнопку событий ().
- Дважды щелкните по событию Нажать, чтобы создать обработчик. Это действие открывает окно кода и создает пустой метод Button1_Click .
- Замените код метода приведенным выше кодом.
Дополнительные сведения о событиях C# см. в разделе События (C#). Дополнительные сведения о событиях Visual Basic см. в разделе События» (Visual Basic)
Удаление обработчика
В разделе Добавление обработчика использовался код для демонстрации добавления обработчика. Этот код также содержит вызов для удаления обработчика:
button1.Click -= button1_Click;
RemoveHandler Button1.Click, AddressOf Button1_Click
Этот синтаксис можно использовать для удаления любого обработчика событий из любого события.
Дополнительные сведения о событиях C# см. в разделе События (C#). Дополнительные сведения о событиях Visual Basic см. в разделе События» (Visual Basic)
Использование нескольких событий с одним и тем же обработчиком
На панели Свойства визуального конструктора Visual Studio можно выбрать тот же обработчик, который уже используется другим событием. Следуйте указаниям в разделе Настройка обработчика, чтобы выбрать существующий обработчик вместо создания нового.
В C# обработчик присоединяется к событию элемента управления в коде конструктора формы, который был изменен с помощью визуального конструктора. Дополнительные сведения о событиях C# см. в разделе Events (C#)
Visual Basic
В Visual Basic обработчик присоединяется к событию элемента управления в файле кода программной части формы, где объявляется код обработчика событий. В код обработчика событий можно добавить несколько ключевых слов Handles , чтобы использовать его с несколькими событиями. Визуальный конструктор создаст ключевое слово Handles и добавит его в обработчик событий. Однако, это можно легко сделать самостоятельно для любого события и обработчика событий элемента управления, если сигнатура метода обработчика соответствует событию. Дополнительные сведения о событиях Visual Basic см. в разделе События (Visual Basic)
В этом коде показано, как один и тот же метод можно использовать в качестве обработчика для двух разных событий Button.Click :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click 'Do some work to handle the events End Sub
См. также
- События элементов управления
- Общие сведения о событиях
- Использование событий мыши
- Использование событий клавиатуры
- System.Windows.Forms.Button
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback
The .NET Desktop documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
