Как установить UserControl в Visual Studio toolBox

Я создал usercontrol в своем проекте, и после создания проекта мне нужно поместить его в свою панель инструментов и использовать его в качестве общего элемента управления. но я не могу. UserControl находится в моем пространстве имен проектов, и я попробовал Choose Item в меню правой кнопки мыши, но я не нашел способ его добавить.

Ответ 1

Я предполагаю, что вы используете VS2010 (это то, что вы отметили как вопрос) У меня возникли проблемы с их добавлением автоматически в панель инструментов, как в VS2008/2005. На самом деле есть возможность остановить заполнение набора инструментов!

Откройте "Инструменты" > "Параметры" > "Конструктор окон" > "Общие"

В нижней части списка вы найдете Toolbox > AutoToolboxPopulate, который по новой установке по умолчанию имеет значение False. Установите его true, а затем перестройте свое решение.

Hey presto, которым они управляют пользователем, решение должно автоматически добавляться в панель инструментов. Возможно, вам придется перезагрузить решение.

Ответ 2

Щелкните правой кнопкой мыши на панели инструментов, затем выберите "выбрать элемент" в контекстном меню. Откроется диалоговое окно с зарегистрированными компонентами. в этом диалоговом окне нажмите "Обзор", чтобы выбрать свою сборку с помощью usercontrol, который вы хотите использовать.

PS. Эта сборка должна быть зарегистрирована ранее.

Ответ 3

Я обнаружил, что пользовательский элемент управления должен иметь конструктор без параметров или он не будет отображаться в списке. по крайней мере, это было верно в vs2005.

Ответ 4

Использование VS 2010:

Скажем, у вас есть проект Windows.Forms. Вы добавляете в проект UserControl (например, MyControl) и разрабатываете его. Теперь вы хотите добавить его в свою панель инструментов.

Как только проект будет успешно создан один раз, он появится в ваших компонентах Framework. Щелкните правой кнопкой мыши панель инструментов, чтобы получить контекстное меню, выберите "Выбрать элементы..." и перейдите к имени вашего элемента управления (MyControl) на вкладке "Компоненты .NET Framework".

Преимущество использования DLL: вы можете редактировать элементы управления в том же проекте, что и ваша форма, и форма будет построена с использованием новых элементов управления. Однако этот проект будет доступен только для этого проекта.

Примечание. Если у элемента управления есть ошибки сборки, разрешите их, прежде чем переходить к содержащимся формам, или у конструктора есть сердечный приступ.

Ответ 5

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

  • В исходном проекте выберите "Файл | Экспорт"

    Затем выберите ItemTemplate и следуйте указаниям мастера.

  • Переместите свой UserControl в отдельную ClassLibrary (и исправьте пространства имен и т.д.).
    Добавьте ссылку в библиотеку классов из необходимых ей проектов. Не беспокойтесь о GAC или что-нибудь еще, просто DLL файл.

Я бы не советовал помещать UserControl в обычный ToolBox, но это можно сделать. См. Ответ от @Arseny

Ответ 6

У меня было много элементов управления пользователями, но никто не показывался на панели инструментов, хотя я перестроил это решение и был проверен в диалоговом окне "Выбрать элементы...".

Решение:

  • В обозревателе решений я правой кнопкой мыши щелкните файл с нарушением пользовательского контроля и выберите Исключить из проекта
  • Перестроить решение
  • Щелкните правой кнопкой мыши элемент управления пользователя и выберите "Включить в проект" (при условии, что в обозревателе решений есть "Показать все файлы" ).

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

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

Ответ 7

В моем случае я не мог видеть никаких элементов управления в проекте. Только при щелчке правой кнопкой мыши на toolBox и выборе "Показать все" я видел их, но все же они были отключены...

Изменение типа проекта из приложения Windows в ClassLibrary сделало исправление.

Ответ 8

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

В вашем решении добавьте новый проект, однако в качестве шаблона проекта выберите "Библиотека классов". В проекте THAT добавьте пользовательский элемент управления и сделайте все, что вам нужно. После этого создайте его, и у вас будет файл dll (его можно легко найти в папке bin/debug проектов.)

Вы можете добавить эту dll в свой инструментарий (щелкните правой кнопкой мыши добавить...), и он останется там во всех проектах!

Ответ 9

Базовый qustion, если вы используете дженерики в своем базовом элементе управления. Если да:

скажем, что у нас есть контроль:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown не позволит открывать конструктор на нем и не будет отображаться в панели инструментов. Зачем? Поскольку базовый контроль еще не скомпилирован - когда выполняется MyComboDropDown. Вы можете изменить это:

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Затем, после перестройки и reset toolbox, он должен уметь видеть MyComboDropDown в дизайнере, а также в Toolbox

Ответ 10

Проблема с моим дизайнером была проблемой 32 против 64 бит. Я мог бы добавить элемент управления в окно инструмента после выполнения инструкций в Невозможно добавить элементы управления из 64-разрядных сборок в панель инструментов или использовать их в конструкторах в среде Visual Studio IDE статья MS KB.

Ответ 11

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