Пользовательские элементы управления не отображаются на панели инструментов - PullRequest
72 голосов
/ 13 ноября 2008

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

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

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

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

Ответы [ 29 ]

80 голосов
/ 13 ноября 2008

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

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

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

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

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

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

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

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

Это адаптировано из Ответ Калануса на аналогичный вопрос .

19 голосов
/ 22 июля 2010

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

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

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

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

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

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

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

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

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

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

6 голосов
/ 03 апреля 2012

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

5 голосов
/ 23 марта 2009

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

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

4 голосов
/ 13 ноября 2008

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

3 голосов
/ 21 ноября 2011

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

3 голосов
/ 20 февраля 2013

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

public class  yourClass:control {}

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

3 голосов
/ 23 ноября 2011

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

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

using System.Windows.Forms.Design;

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

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

...