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