Не удалось загрузить элемент панели инструментов. Он будет удален из панели инструментов

У меня есть приложение WinForm. Я также создал для себя свой User Control. Все работало нормально. До сегодняшнего дня я получил сообщение об ошибке при попытке добавить его обратно в свою программу (я никогда не удалял его. Visual Studio сделал).

Не удалось загрузить элемент панели инструментов #UserControlName. Он будет удален из панели инструментов.

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

'# UserControlName' никогда не назначается и всегда будет иметь значение по умолчанию null.

И когда я смотрю на свой код дизайнера, это правда. Но я не сделал ничего с моим дизайнерским кодом. Мой пользовательский элемент управления определен там, но не создан. Как я могу вернуть его?

Имеет ли это отношение к тому, что я изменил свою платформу сборки с x32 на x64? Если это так, я буду удивлен, потому что после этих изменений программа работала нормально.

Ответ 1

В такие моменты вам придется поработать с кодом дизайнера. Пока вы не вносите существенных изменений в код конструктора, вы ничего не должны ломать. Чтобы воспроизвести это безопасно, повторно создайте экземпляр объекта, где создаются другие элементы управления (рядом с верхней частью страницы). Дизайнер должен заполнить пробелы для свойств и т.д.

Это также должно вернуть элемент управления в панель инструментов.

Ответ 2

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

Ответ 3

Я страдал от той же проблемы для одного из наших приложений и не мог найти решение. Поэтому я создал пользовательские и пользовательские элементы управления вручную. После повторного поиска в Интернете я наконец нашел, почему дизайнер терпит неудачу для этого конкретного проекта. Ответ в том, что проект 64-битный, а Visual Studio до сих пор не имеет 64-битной версии, он все еще 32-битный. Поэтому разработчик не мог загрузить элементы управления в 64-разрядных приложениях или в библиотеках классов. Прочитайте статью Microsoft об этом. На сайте Visual Studio была статья, но она была удалена. Смотрите ответ в форуме поддержки Visual Studio.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/77e10b58-43cc-4aab-919f-888f14f99571/x64-class-library-of-user-controls?forum=csharpgeneral

Ответ 4

Вам необязательно вставлять пользовательский контроль вручную. У меня была такая же ситуация, и для этого была причина.
В моем случае это не удалось, потому что сборка EXE была скомпилирована в "смешанный режим" с использованием типа поддержки CLR /clr. После того, как вы изменили его на "только для управления", установив тип /clr:pure, он сработал.
Подробнее см. мой ответ здесь в SO.

Ответ 5

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

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

Итак, это очень простые шаги, которые исправили мой исходный код

  • В explorer explorer переименуйте файл (я просто добавил s в конце)
  • Перестроить
  • Проверить, что элемент управления теперь можно добавить в обычную форму
  • Переименуйте элемент управления обратно в исходное имя

Шаг 4 может быть необязательным для вас, но если у вас есть контроль источника, и это в библиотеке, вы хотели бы сделать это.

Это привело контроль на все мои формы, которые не работали (насколько я могу судить). Кажется, проблема в VS, что-то помнит, что ей это не нравится?

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

P.S. Очистить, перестроить и/или повторно запустить решение - это старая подставка для этой проблемы, но на этот раз это был всего лишь один настраиваемый элемент управления в целом (DLL). Надеюсь, это поможет.

Ответ 6

Перейдите на AnyCPU и перестройте проект. Visual Studio имеет проблемы с 64-битными элементами управления.

Ответ 7

Проверьте в своем файле form.designer, есть ли оставленное свойство с этим типом. Это случилось со мной несколько раз. После того, как я удалил эту строку и перестроил проект, все начало работать.

Ответ 8

Для меня, после добавления userControl, я сначала перестроил приложение, а затем обновил элементы в наборе инструментов, перейдя в проекты => Обновить элементы панели инструментов проекта.

Ответ 9

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