Как поместить UserControl в панель инструментов Visual Studio - PullRequest
89 голосов
/ 10 августа 2010

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

Ответы [ 10 ]

109 голосов
/ 17 ноября 2011

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

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

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

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

35 голосов
/ 10 августа 2010

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

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

23 голосов
/ 23 декабря 2010

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

14 голосов
/ 23 декабря 2010

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

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

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

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

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

6 голосов
/ 19 июля 2013

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

Решение:

  1. Из Обозреватель решений I Щелкните правой кнопкой мыши файл пользовательского элемента управления с ошибками и выберите Исключить из проекта
  2. Перестроить решение
  3. Щелкните правой кнопкой мыши элемент управления и выберите Включить в проект (при условии, что у вас есть Показать всеФайлы , включенные в Solution Explorer )

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

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

3 голосов
/ 10 августа 2010

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

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

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

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

2 голосов
/ 14 марта 2017

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

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

1 голос
/ 05 августа 2015

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

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

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

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

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

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Чем после перестройки и сброса панели инструментов он сможет видеть MyComboDropDown в конструкторе, а также в Панели инструментов

0 голосов
/ 09 сентября 2014

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

0 голосов
/ 21 июля 2014

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

...