Как поместить 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, хотя я перестроил решение и оно было проверено в Выбрать Элементы... диалог.

устранение:

  1. С Обозреватель Я Щелкните Правой Кнопкой Мыши файл-нарушитель и выбран Исключить Из Проекта
  2. восстановить решение
  3. Правой Кнопкой Мыши пользователя управление и выберите включить в проект (Если у вас есть Показать Все Файлы включен в Обозреватель)

Примечание это также требует, чтобы у вас был AutoToolboxPopulate включено. Как предполагает ответ @DaveF.

альтернативное решение: я не уверен, что это работает, и я не мог попробовать, так как я уже решил свою проблему, но если вы сняли флажок с пользовательского элемента управления Выбрать Элементы... диалоговое окно, нажмите OK, затем откройте его и проверьте пользовательский элемент управления. Это тоже может сработать.


есть несколько способов.

  1. в исходном проекте выберите Файл / Экспорт шаблона
    Затем выберите ItemTemplate и следуйте указаниям мастера.

  2. переместите 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.


перекомпиляция сделала трюк для меня!