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

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

Тем не менее, UserControls не отображаются в панели инструментов, чтобы я перетащил их в форму Windows.

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

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

Ответ 1

Проверьте этот параметр:

Инструменты > Параметры > Дизайнер Windows Forms > Общие сведения: AutoToolboxPopulate

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

Ответ 2

  • Создайте свой проект, чтобы убедиться в его компиляции.

  • В форме, которую вы хотите, чтобы ваш пользователь контролировал, откройте панель инструментов, щелкните правой кнопкой мыши и выберите "выбрать элементы"

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

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

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

Это адаптировано из Calanus для ответа на аналогичный вопрос.

Ответ 3

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

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

Ответ 4

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

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

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

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

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

using System.Windows.Forms.Design;

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

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

Ответ 10

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

Вот что, наконец, помогло мне:

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

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

Ответ 11

Помимо всех инструкций, которые были предоставлены (Tools > Options > Windows Forms Designer > General: AutoToolboxPopulate) + вам нужно собрать решение (что очевидно для меня), вам, вероятно, придется обратить внимание на модификатор доступа к классу: он ДОЛЖЕН быть ОБЩЕСТВЕННЫМ. Я просто создал элемент управления и не появился в списке инструментов, и я не знал почему. Поэтому после установки

public class  yourClass:control {}

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

Ответ 12

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

Ответ 13

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

Ответ 14

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

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

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

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

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

Ответ 15

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

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

Это случилось со мной после недавней установки автоматического обновления Windows VS 2008, кстати.

Ответ 16

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

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

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

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

Ответ 17

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

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

Тем не менее вы все еще видите, что он неактивен.

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

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

Ответ 18

Я попал в эту ловушку всего пару часов назад.
У меня есть проект приложения .NET 2.0 Windows Application с некоторыми пользовательскими UserControls; он работал нормально. Поэтому я решил заказать файлы в подпапках, чтобы сделать мой проект немного чище.
После этого дизайнер Visual Studio 2010 прекратил загружать мои формы, а ToolBox больше не будет отображать мои элементы управления.
Я испугался, переместив исходные файлы в корне проекта, сбросив ToolBox, но ничего не работало. После этого я вспомнил, что использовал ReSharper "Удалить неиспользуемые ссылки", поэтому я попытался вернуть неиспользуемую ссылку, в частности System.Data​​strong > : проблема решена!: O Я не могу сказать, почему, но это сработало для меня.
Надеюсь, мой опыт поможет кому-то другому.:)
Пока, Нандо

Ответ 19

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

Ответ 20

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

  • Щелкните правой кнопкой мыши ваш проект, содержащий ваш элемент управления.
  • Выберите Properties.
  • В категории настроек Build убедитесь, что отмечен Register for COM interop.

Ответ 21

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

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

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

Ответ 22

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

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

public UserControl() {
...
}

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

Ответ 23

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

Ответ 24

Симптом 1: Представления дизайна для формы, UserControl и компонента были FAILING!

  • В моем представлении с дизайном формы отсутствует ms/msg. "Не удается найти" User Control ".
  • Если бы я мог получить представление формы, чтобы работать, он был очень неустойчивым и искаженным до черта с любыми изменениями.

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

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

Решение. Задайте область действия Публичная в vb за UserControl и Component

Ответ 25

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

Я переместил свое решение с drive:\work\c#\folder\ на drive:\work\folder и решил проблему.

Ответ 26

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

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

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

Ответ 27

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

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

Ответ 28

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

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

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

Ответ 29

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