Как поместить UserControl в Visual Studio toolBox
Я сделал usercontrol в своем проекте, и после создания проекта мне нужно поместить его в свой набор инструментов и использовать его как общий элемент управления. но я не могу. the UserControl
в моем пространстве имен проекта, и я пробовал Choose Item
в меню правой кнопки мыши, но я не нашел способ добавить его.
11 ответов
Я предполагаю, что вы используете VS2010 (это то, что вы пометили вопрос как) У меня были проблемы с их автоматическим добавлением в Панель инструментов, как в VS2008/2005. Есть возможность остановить инструментарий автозаполнения!
перейдите в меню Сервис > Параметры > конструктор Windows Forms > общие
в нижней части списка вы найдете Toolbox > AutoToolboxPopulate, который при новой установке по умолчанию равен False. Установите его true, а затем перестройте решение.
Hey presto они пользовательские элементы управления в вашем решении должны быть автоматически добавлены в Панель инструментов. Возможно, Вам также придется перезагрузить решение.
щелкните правой кнопкой мыши на панели инструментов, затем нажмите "Выбрать пункт" в контекстном меню. Появится диалоговое окно с зарегистрированными компонентами. в этом диалоговом окне нажмите "Обзор", чтобы выбрать сборку с usercontrol, который вы хотите использовать.
PS. Эта сборка должна быть зарегистрирована раньше.
Я обнаружил, что пользовательский элемент управления должен иметь конструктор без параметров и он не будет отображаться в списке. по крайней мере так было в vs2005.
использование VS 2010:
допустим, у вас есть Windows.Формы проекта. Вы добавляете UserControl (скажем, MyControl) в проект и разрабатываете его. Теперь вы хотите добавить его в свой набор инструментов.
Как только проект будет успешно построен один раз, он появится в ваших компонентах фреймворка. Щелкните правой кнопкой мыши панель инструментов, чтобы получить контекстное меню, выберите " Выбрать элементы...", и перейдите к имени вашего элемента управления (MyControl) в разделе " компоненты .NET Framework" табуляция.
преимущество перед использованием DLL: вы можете редактировать элементы управления в том же проекте, что и ваша форма, и форма будет строиться с новыми элементами управления. Однако контроль будет доступен только для этого проекта.
Примечание: Если у элемента управления есть ошибки сборки, разрешите их перед переходом к содержащим формам или у конструктора сердечный приступ.
У меня было много элементов управления пользователями, но один отказался показывать в Toolbox, хотя я перестроил решение и оно было проверено в Выбрать Элементы... диалог.
устранение:
- С Обозреватель Я Щелкните Правой Кнопкой Мыши файл-нарушитель и выбран Исключить Из Проекта
- восстановить решение
- Правой Кнопкой Мыши пользователя управление и выберите включить в проект (Если у вас есть Показать Все Файлы включен в Обозреватель)
Примечание это также требует, чтобы у вас был AutoToolboxPopulate включено. Как предполагает ответ @DaveF.
альтернативное решение: я не уверен, что это работает, и я не мог попробовать, так как я уже решил свою проблему, но если вы сняли флажок с пользовательского элемента управления Выбрать Элементы... диалоговое окно, нажмите OK, затем откройте его и проверьте пользовательский элемент управления. Это тоже может сработать.
есть несколько способов.
в исходном проекте выберите Файл / Экспорт шаблона
Затем выберите ItemTemplate и следуйте указаниям мастера.переместите UserControl в отдельный ClassLibrary (и исправьте пространства имен и т. д.).
Добавьте ссылку на classlibrary из проектов, которые в ней нуждаются. Не беспокойтесь о GAC или чем-то еще, просто файл DLL.
Я бы не советовал ставить UserControl в обычный ToolBox, но это можно сделать. См. ответ от @Arseny
насколько я знаю, вы можете перетащить свой usercontrol в текущем проекте на панель инструментов. Проблема в том, что при выборе другого проекта пользовательский элемент управления исчезнет. Поэтому я думаю, что вам нужно создать отдельный проект библиотеки управления:
в своем решении, добавьте новый проект, однако в качестве шаблона проекта выбрать "библиотеку классов". В этом проекте добавьте пользовательский элемент управления и сделайте все необходимое. Как только это будет сделано, создайте его ,и у вас будет dll-файл (он может легко найти в папке проектов bin/debug.)
вы можете добавить эту dll на панель инструментов (щелкните правой кнопкой мыши добавить...) и он останется там во всех проектах!
в моем случае я не видел никаких элементов управления в проекте. Только при щелчке правой кнопкой мыши по панели инструментов и выборе "показать все" я видел их, но все же они были отключены...
изменение типа проекта из приложения Windows в ClassLibrary сделало исправление.
Basic qustion, если вы используете дженерики в Базовом элементе управления. Если да:
допустим, у нас есть управление:
public class MyComboDropDown : ComboDropDownComon<MyType>
{
public MyComboDropDown() { }
}
MyComboDropDown не позволит открыть конструктор на нем и не будет отображаться в Toolbox. Почему? Потому что базовый элемент управления еще не скомпилирован-когда выполняется MyComboDropDown. Вы можете изменить это:
public class MyComboDropDown : MyComboDropDownBase
{
public MyComboDropDown() { }
}
public class MyComboDropDownBase : ComboDropDownComon<MyType>
{
}
чем после перестроения и сброса toolbox он должен иметь возможность видеть MyComboDropDown в designer, а также в Toolbox
проблема с моим дизайнером была проблемой 32 против 64 бит. Я мог бы добавить элемент управления в поле инструментов после выполнения инструкций в Не удается добавить элементы управления из 64-разрядных сборок в Панель элементов или использовать в конструкторах в среде IDE Visual Studio статья MS KB.