Пользовательские элементы управления не отображаются в панели элементов
У меня есть некоторые UserControls, которые я создал в ProjectA. У меня есть ProjectB, который имеет форму windows, которую я хочу включить. Оба этих проекта находятся в одном решении. Существует ссылка на ProjectA из ProjectB, поэтому он может "видеть" UserControls.
однако UserControls не отображаются в панели инструментов для перетаскивания в форму windows.
Я попытался восстановить. Я также удалил каталог "bin", чтобы заставить перестроить-все.
Как получить VS2008 для заполнения панели инструментов с помощью моих UserControls?
29 ответов
проверить этот параметр:
Инструменты > Параметры > Конструктор Windows Forms > Общие Сведения: AutoToolboxPopulate
для этого должно быть установлено значение True.
создайте свой проект, чтобы убедиться, что он компилируется.
С формой, которую вы хотите, чтобы ваш пользовательский элемент управления, Откройте Панель инструментов, щелкните правой кнопкой мыши и выберите "выбрать элементы"
перейдите к вашей .exe или dll, которые вы скомпилировали на шаге 1.
убедитесь, что рядом с пользовательским элементом управления есть галочка, нажмите OK.
ваш пользовательский элемент управления должен появиться в панели инструментов, поэтому перетащите его на свой форма.
это взято из ответ Калана на аналогичный вопрос.
в моем случае 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) + вам нужно построить решение (что очевидно для меня), вам, вероятно, придется обратить внимание на модификатор доступа к классу: он должен быть общедоступным. Я просто создал элемент управления и не появился в списке инструментов, и я не знал, почему. Так что после set
public class yourClass:control {}
чем он появился в списке. ;) Надеюсь, это поможет другим.
Проверьте выходной каталог сборки. Если по какой-то причине вы создаете вывод где-то, кроме каталога project bin\, элементы управления не будут отображаться в панели инструментов.
вот моя проблема: Я добавил новый конструктор для своего элемента управления, который принял несколько аргументов, но я явно не повторно объявил пустой конструктор! Панель элементов может включать только элементы управления с пустыми конструкторами. В общем случае, когда вы разрабатываете класс в vb, он имеет пустой конструктор, определенный неявно (что означает, что вам не нужно объявлять его). Но как только вы начинаете разрабатывать свои собственные конструкторы, этот пустой конструктор исчезает, поэтому вам нужно явно переопределите его в своем коде! В любом случае, я понимаю, что самый опытный кодер vb уже знает все это, но, надеюсь, это может помочь некоторым новичкам, таким как я :).
возможно, что все вышеперечисленное не удастся.
я исправил это, создав новый пользовательский элемент управления (TestControl), и это вызвало Visual Studio, чтобы волшебным образом добавить вкладку элементов управления моего проекта + элементы управления обратно в Панель инструментов. Затем я просто удалил тестовый элемент управления.
Это случилось со мной после недавней установки VS 2008 automated Windows update, кстати.
что я обычно делаю, это создать новую вкладку и добавить exe/dll на эту вкладку... Не слишком удобно с этим решением из-за времени загрузки и общих хлопот.
друг показал мне способ ускорить этот процесс. Вместо того, чтобы нажимать "выбрать элементы"..."в панели инструментов и т. д. Для каждого нового элемента управления вы можете создать файл с именем MyCustomControls
и там вы можете создавать свои пользовательские элементы управления.
Теперь вам нужно только сделать "выбрать элементы...- и добавьте этот файл один раз. Если позже вы решите добавить новый элемент управления, создайте его в MyCustomControls
и потом восстановить.
Тогда ваш toolbox будет иметь ваш новый контроль. (Он будет отображаться автоматически с обычной компиляцией, если у вас есть AutoToolboxPopulate
Я думаю)
это неудачно, потому что часто вы хотите разделить классы на"один класс на файл". Ужасно, что вы должны разрушить свою архитектуру кода только потому, что VS не хочет делать это по-вашему. :)
Я не слишком комфортно с этим решение либо, но если вам нужно сделать что-то быстро, и вы не заботитесь о нескольких пользовательских элементах управления в файле или просто ленивы, это может вам хорошо подойти. :)
Ну, у меня ничего не работало, кроме этого...
- Я создаю новый проект в своем решении, и для этого проекта он работает, поэтому я собирался начать использовать этот
- играя в arond, я начал настраивать xml файла csproj, чтобы узнать, что случилось с моим другим проектом в том же решении, а затем я сбросил его, поскольку он, похоже, не работал
- Теперь он снова волшебно работает в моем проекте
не очень хорошее решение, но вы должны попробовать эти шаги
- посмотрите, работает ли он в новом решении/проекте.
- посмотрите, работает ли он в новом проекте в том же решении
- Если #2 работал, возможно, сравните .файлов csproj...как-то мой начал работать снова, пока я это делал(это очень расстраивает).
при условии, что вы уже пробовали возиться с:
- Инструменты > Параметры > Конструктор Windows Forms > Общие Сведения: AutoToolboxPopulate
- Инструменты > Параметры > текстовый редактор > XMAL > разное: AutoToolboxPopulate
- создали конструктор по умолчанию
- создайте свой проект / сбросьте панель инструментов и добавьте вручную вкладку
пока вы все еще видите его серым..
Проверьте длина пути и проверяем charcters используются в вашем абсолютном пути.
У меня был проект, проживающий в "C:\Users\myName\myCompany\R&D\Projects"
И через несколько часов выяснил, что "R&D" проблема..
The'& ' не разрешил включить элементы usercontrol в панели инструментов.
Я попал в эту ловушку буквально пару часов назад.
У меня есть проект приложения .NET 2.0 Windows с некоторыми пользовательскими UserControls; он работал нормально. Поэтому я решил заказать свои файлы в подпапках, чтобы сделать мой проект немного чище.
После этого Visual Studio 2010 designer прекратил загрузку моих форм, и ToolBox больше не будет показывать мои элементы управления.
Я испугался, вернув исходные файлы в корень проекта, сбросив ToolBox, но ничего не сработало. После этого я вспомнил, что я использовал ReSharper "удалить неиспользуемые ссылки", поэтому я попытался вернуть неиспользуемую ссылку, в частности
Если вы все еще не можете найти, почему ваш vstudio toolbox не заполнен вашими usercontrols. Затем вы можете отлаживать vstudio с помощью другой visual studio. здесь вы можете найти как.
Если вы пробовали следовать всем другим ответам, и это еще не работает, следующее исправлено для меня:
- щелкните правой кнопкой мыши на проекте, содержащем ваш элемент управления.
- выберите
Properties
. - на
Build
категория настроек, убедитесь, что это.
в моем случае причиной ошибки была избыточная длина пути к моему элементу управления .файл DLL. Я немного уменьшил его, и все стало работать нормально.
также я узнал, что специальные символы (например, я использовал #) в пути влияют на контрольный дисплей.
надеюсь, что это решает проблему.
в вашем UserControl убедитесь, что объявлено новое Public. Он не будет отображаться, если он просто объявлен Sub New (по умолчанию Friend).
Симптом 1:Вид Конструкции для формы, 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
в настройках проекта. Сделайте это для Debug и При необходимости отпустите сборку.
когда я попытался добавить свой UserControl в Панель инструментов (щелкните правой кнопкой мыши панель инструментов, выберите элементы, выберите мою DLL), он отобразит сообщение о том, что в моей DLL нет элементов управления.
в любом случае, проблема была решена, пытаясь создать форму в моей DLL в VS и добавив UserControl. Отображается сообщение об ошибке, в котором говорится, что конструктора по умолчанию нет
public UserControl() {
...
}
конструктор нуждается в этом, потому что он не может знать, какие допустимые аргументы. Как только я добавил пустой конструктор в UserControl он был добавлен в Панель инструментов без проблем.
Как уже упоминалось здесь вы должны сказать 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 и это сработало отлично.