Пользовательские элементы управления не отображаются в панели инструментов


У меня есть некоторые UserControls, которые я создал в ProjectA. У меня есть ProjectB, который имеет форму windows, на которую я хочу поставить элементы управления. Оба этих проекта находятся в одном решении. Есть ссылка на проект из Проект Б, так что он может "видеть" элементы управления UserControl.

однако UserControls не отображаются в панели инструментов для меня, чтобы перетащить в форму windows.

Я пытался восстановить. Я также удалил каталог "bin", чтобы заставить перестроить-все.

Как я могу получить VS2008 для заполнения панели инструментов с помощью моих UserControls?

29 71

29 ответов:

проверьте эту настройку:

Сервис > Параметры > Конструктор Windows Forms > Общие Сведения: AutoToolboxPopulate

для этого должно быть установлено значение True.

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

  2. С формой, которую вы хотите, чтобы ваш пользовательский элемент управления, Откройте Панель инструментов, щелкните правой кнопкой мыши и выберите "выбрать элементы"

  3. перейдите к вашей .exe или dll, которые вы скомпилировали на шаге 1.

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

  5. ваш пользовательский элемент управления должен появиться в панели инструментов, поэтому перетащите его на свой форма.

это взято из ответ Калана на аналогичный вопрос.

в моем случае AutoToolboxPopulate уже установлен (Visual C# 2010 Express).

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

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

  • Сервис > Параметры > Конструктор Windows Forms > Общие Сведения: AutoToolboxPopulate
  • Инструменты > Параметры > текстовый редактор > XMAL > разное : AutoToolboxPopulate
  • сбросить настройки VS по умолчанию

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

затем я подумал, что что-то может быть не так с моим проектом или файлом окна wpf. Удалил проект, создал новый и добавил новый элемент управления. Составили проект, но он не работал.

единственное, что я сделал, было выбрать имя для проекта, который Я включил пробел в имя "приложение WPF".

снова удалил проект и снова создал новый под названием "WPFApplication" без пробела и добавил пользовательский элемент управления. Построил его, и появился пользовательский элемент управления.

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

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

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

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

обычно вам нужно построить решение. Это почти всегда работает для меня.

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

для тех, кто может работать с ToolStripItems (например,ToolStripStatusLabel), чтобы на самом деле получить производный элемент управления, чтобы показать в выпадающем меню (например, один из StatusStrip),вам нужно установить класс public затем построить решение.

также не забудьте атрибут designer для вашего класса, что-то вроде этого:

using System.Windows.Forms.Design;

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class MyStatusLabel : ToolStripStatusLabel
{
}

мне потребовалось время, чтобы получить это право. Надеюсь, это может сэкономить чье-то время.

мой элемент управления был общедоступным, он был отмечен в диалоговом окне "Выбор элементов панели инструментов", но он все еще не отображался.

вот что, наконец, сработало для меня:

щелкните правой кнопкой мыши где-нибудь в панели инструментов и нажмите кнопку "Выбрать элементы". Когда я нашел свой товар, он уже был проверен. Затем я снял флажок с элемента и нажал кнопку ОК. Затем я снова щелкнул правой кнопкой мыши по панели инструментов и искал свой предмет... он исчез, поэтому я нажал кнопку Обзор, перешел в папку obj/x86/debug и выбрал мой исполняемый. Затем элемент был правильно добавлен в Панель инструментов.

Я думаю, что это VS ошибка.

кроме всех инструкций, которые были даны(Инструменты > Параметры > конструктор Windows Forms > общие : AutoToolboxPopulate) + вам нужно построить решение (что очевидно для меня) вам, вероятно, придется обратить внимание на модификатор доступа к классу: он должен быть общедоступным. Я просто создал элемент управления и не появился в списке инструментов, и я не знал, почему. Так что после набора

public class  yourClass:control {}

чем он оказался в списке. ;) Надеюсь, это поможет другим.

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

вот моя проблема: Я добавил новый конструктор для моего элемента управления, который принял несколько аргументов, но я явно не повторно объявил пустой конструктор! Набор инструментов может включать только элементы управления, которые имеют пустые конструкторы. В общем случае, когда вы разрабатываете класс в vb, он имеет пустой конструктор, определенный неявно (что означает, что вам не нужно объявлять его). Но, как только вы начинаете разрабатывать свои собственные конструкторы, этот пустой конструктор исчезает, поэтому вам нужно явно переопределите его в своем коде! В любом случае, я понимаю, что большинство опытных VB coder уже знают все это, но, надеюсь, это может помочь некоторым новичкам, таким как я :).

возможно, что все вышеперечисленное потерпит неудачу.

я исправил это, создав новый пользовательский элемент управления (TestControl), и он вызвал Visual Studio, чтобы волшебным образом добавить вкладку элементов управления моего проекта + элементы управления обратно в Панель инструментов. Затем я просто удалил тестовый контроль.

Это произошло со мной после недавней установки VS 2008 automated Windows update, кстати.

то, что я обычно делаю, это создать новую вкладку и добавить exe/dll на эту вкладку... Не слишком удобно с этим решением из-за времени загрузки и общих хлопот.

друг показал мне способ ускорить этот процесс. Вместо того, чтобы нажать кнопку " Выбрать элементы..."в панели инструментов и т. д. Для каждого нового элемента управления вы можете создать файл с именем MyCustomControls и там вы можете создать свои собственные элементы управления.

Теперь вам нужно только сделать "выбрать элементы...- и добавьте этот файл один раз. Если позже вы решите добавить новый элемент управления, создать его в MyCustomControls и потом восстановить.
Тогда ваш набор инструментов будет иметь свой новый элемент управления. (Он будет отображаться автоматически с обычной компиляции, если у вас есть AutoToolboxPopulate Я думаю)

Это печально, потому что часто вы хотите разделить классы на "один класс на файл". Это ужасно, что вы должны разрушить свою архитектуру кода только потому, что VS не хочет делать это по-своему. :)

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

Ну, ничего не работает для меня, кроме этого работал...

  1. Я создаю новый проект в своем решении, и для этого проекта он работает, поэтому я собирался начать использовать этот
  2. играя в arond, я начал настраивать xml файла csproj, чтобы узнать, что не так с моим другим проектом в том же решении, а затем я сбросил его, поскольку он, похоже, не работает
  3. Теперь он снова волшебно работает в моем проекте

не очень хорошее решение, но вы должны попробовать эти шаги

  1. смотрите, если он работает в совершенно новом решении/проекте.
  2. смотрите, если он работает в совершенно новом проекте в том же решении
  3. Если #2 работал, может быть, сравнить .файлов csproj...как-то мой начал работать снова, пока я делал это(это очень расстраивает).

при условии, что вы уже пробовали возиться с:

  • Сервис > Параметры > Конструктор Windows Forms > Общие Сведения: AutoToolboxPopulate
  • Инструменты > Параметры > текстовый редактор > XMAL > разное : AutoToolboxPopulate
  • создали конструктор по умолчанию
  • создайте свой проект / сбросьте панель инструментов и добавьте вручную свою вкладку

пока вы все еще видите его серым..

Проверьте длина пути и проверяем символы используются в вашем абсолютном пути.

У меня был проект, проживающий в "C:\Users\myName\myCompany\R&D\Projects"
А через несколько часов узнал, что "R&D" проблема..
В '&' не позволял включить элементы usercontrol в моем наборе инструментов.

Я попал в эту ловушку буквально пару часов назад.
У меня есть .Проект Net 2.0 приложения Windows С некоторые пользовательские элементы управления UserControl; он работал нормально. Поэтому я решил заказать мои файлы в подпапках, чтобы сделать мой проект немного чище.
После этого Visual Studio 2010 designer прекратил загрузку моих форм, и ToolBox больше не будет показывать мои элементы управления.
Я испугался, вернув исходные файлы в корень проекта, сбросив ToolBox, но ничего не сработало. После этого я вспомнил, что я использовал ReSharper "удалить неиспользуемые ссылки", поэтому я попытался верните неиспользуемую ссылку, в частности

Если вы все еще не можете найти, почему ваш vstudio toolbox не заполнен вашими usercontrols. Затем вы можете отлаживать vstudio с помощью другой visual studio. здесь вы можете найти как.

Если вы пробовали следовать всем другим ответам, и это еще не работает, следующее исправлено для меня:

  • щелкните правой кнопкой мыши на проекте, содержащем ваш элемент управления.
  • выберите Properties.
  • на Build категория настройки, убедится это.

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

также я обнаружил, что специальные символы (например, я использовал #) в пути влияют на отображение элемента управления.

надеюсь, что это решает проблему.

в элемент управления UserControl, убедитесь, что новая объявлен Public. Он не будет отображаться, если он просто объявлен Sub New (по умолчанию-Friend).

Симптом 1: The Вид Конструкции для формы, элемент управления UserControl, и компоненты были не в состоянии!

  • мой вид дизайна формы был неудачным с msg "не удается найти " пользовательский элемент управления"."
  • если бы я мог получить представление дизайна формы для работы, это было очень нестабильным и поврежденным все в ад с любыми изменениями.

симптом 2: компонент UserControl & в Toolbox

  • были выделены серым цветом в панели инструментов и показали искаженный имя
  • "выбрать элемент" в контекстном меню Toolbox показал искаженное имя & нет пространства имен

решение: установите область действия в Public в vb за UserControl, & Component

Проверьте путь к проекту, избегайте &,# etc.

я переместил свое решение из drive:\work\c#\folder\ до drive:\work\folder и это решило проблему.

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

однако даже в 2016 году Visual Studio (devenv.exe) по-прежнему 32-разрядный процесс, и он не может загружать 64-разрядные сборки. Чтобы проверить разрядность Visual Studio, откройте Диспетчер задач и проверьте *32 в названии процесса.

обходной путь для просмотра элементов управления в панели инструментов: установите целевую платформу в Any CPU в настройках проекта. Сделайте это для отладки и Отпустите сборку, если это необходимо.

когда я попытался добавить свой UserControl в toolbox (щелкните правой кнопкой мыши toolbox, выберите элементы, выберите мою DLL), он отобразит сообщение о том, что в моей DLL нет элементов управления.

в любом случае, проблема была решена, пытаясь создать форму в моей DLL в VS и добавив UserControl. Сообщение об ошибке отображается сообщение о том, что не было конструктора по умолчанию

public UserControl() {
...
}

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

Как уже упоминалось здесь вы должны сказать visual studio, чтобы загрузить ваш usercontrol в toolbox.

[ToolboxItem(true)]
public class PanelTitle : LabelControl  {
// Whatever code to override LabelControl here...
}

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

Я пытался добавить пользовательский элемент управления в toolbox для проекта для Windows CE 5.0 и .Net Compact v3.5 на VS2008. Я сделал все эти предыдущие предложения, но ничего не сработало. Элемент управления отображается, когда установлен флажок" Показать все", но он отображается серым цветом, даже в меню" выбрать элементы".

Я создал новый проект с .Net v2. 0 и он работал отлично.

привет его ответ Ctrl + Alt+X возьмите это и позже у вас есть TOOLBOX :)