Як помістити UserControl у панель інструментів Visual Studio


93

Я зробив керування користувачем у своєму проекті, і після побудови проекту мені потрібно помістити його у свій набір інструментів та використовувати як загальний елемент керування. але я не можу. the UserControlзнаходиться у моєму просторі імен проекту, і я спробував Choose Itemу меню правою кнопкою миші, але не знайшов способу додати його.

Відповіді:


114

Я припускаю, що ви використовуєте VS2010 (саме це ви позначили запитанням). У мене були проблеми з автоматичним додаванням їх до набору інструментів, як у VS2008 / 2005. Насправді є можливість зупинити автоматичне заповнення набору інструментів!

Перейдіть до Інструменти> Параметри> Конструктор форм Windows> Загальне

У нижній частині списку ви знайдете Toolbox> AutoToolboxPopulate, який при новій установці за замовчуванням має значення False. Встановіть це так, а потім відновіть своє рішення.

Гей, перед тим, як користувацькі елементи керування у вашому рішенні повинні бути автоматично додані до набору інструментів. Можливо, доведеться також перезавантажити рішення.


31
Ключовим словом для мене було "перебудувати" ... не пробував цього, о! Робити це одне, сортувало це для мене.
Danny Beckett

2
І мені довелося знову відкрити рішення після відновлення
Джим Ламан

1
У VS2012 вони тепер додали підказку "Поточне рішення потрібно знову відкрити, щоб це набрало чинності" до діалогового вікна параметрів.
Carlos P

2
@AnatoliiGumennyi Вам доведеться слідувати вказівкам @ Arseny, якщо UserControlце поза поточним проектом.
Атакуючий

2
Примітка. Схоже на те, що у VS2013 параметр "Панель інструментів"> "Автозаправна панель" за замовчуванням тепер за замовчуванням має значення True при новій установці.
Curmudgeon

35

Клацніть правою кнопкою миші на панелі інструментів, а потім натисніть "вибрати пункт" у контекстному меню. Відкриється діалогове вікно із зареєстрованими компонентами. у цьому діалоговому вікні натисніть "Огляд", щоб вибрати свою збірку за допомогою елемента керування користувачем, який ви хочете використовувати.

PS. Ця асамблея повинна бути зареєстрована раніше.


17
Чи можете ви пояснити "зареєстровано раніше"? Я не думаю, що цього потрібно.
Henk Holterman

25

Я виявив, що елемент керування користувачем повинен мати конструктор без параметрів, інакше він не відображатиметься у списку. принаймні, це було вірно проти vs2005.


8
Також у vs2012.
colbybhearn

8
Також у vs2013.
Коннор Макгінес

6
Також у vs2015?
сердар

5
Та й в vs2015
JRB

5
Додати vs2017 до списку
Райан

14

Використання VS 2010:

Скажімо, у вас є проект Windows.Forms. Ви додаєте UserControl (скажімо MyControl) до проекту і розробляєте все це. Тепер ви хочете додати його до своєї панелі інструментів.

Як тільки проект буде успішно побудований один раз, він з’явиться у ваших компонентах Framework. Клацніть правою кнопкою миші на панелі інструментів, щоб отримати контекстне меню, виберіть "Вибрати елементи ..." та перейдіть до імені елемента керування (MyControl) на вкладці "Компоненти .NET Framework".

Перевага перед використанням DLL: ви можете редагувати елементи керування в тому ж проекті, що і ваша форма, і форма буде побудована за допомогою нових елементів керування. Однак контроль буде доступний лише для цього проекту.

Примітка: Якщо елемент керування має помилки побудови, усуньте їх, перш ніж переходити до містять форми, або у конструктора трапляється серцевий напад.


1
Він також може бути доступний для інших проектів, якщо ви імпортуєте .exe у набір інструментів.
Себастьян,

1
Будь-яка відповідь, що містить "або у дизайнера інфаркт", отримує мій голос!
Джоель

Я зробив те саме, і це все добре, але коли я перемістив код в інший проект, створив dll і посилався на файл dll, користувацький елемент керування не відображається.
Fandi Susanto

6

У мене було багато елементів керування користувачами, але один відмовився відображатись у Панелі інструментів , хоча я відновив рішення, і це було перевірено в діалоговому вікні Вибір елементів ...

Рішення:

  1. У Провіднику рішень я клацнув правою кнопкою миші файл керування користувачем і вибрав Виключити з проекту
  2. Відновіть рішення
  3. Клацніть правою кнопкою миші елемент керування користувача та виберіть Включити в проект (за умови, що у Програмі рішень увімкнено функцію Показувати всі файли )

Зауважте, для цього також потрібно, щоб у вас була ввімкнена опція AutoToolboxPopulate . Як підказує відповідь @DaveF.

Альтернативне рішення: Я не впевнений, що це працює, і я не міг спробувати, оскільки я вже вирішив свою проблему, але якщо ви зняли прапорець з елемента керування користувача у діалоговому вікні Вибір елементів ... , натисніть OK, а потім відкрийте його і перевірив керування користувачем. Це також може спрацювати.


3

Є кілька способів.

  1. У оригінальному проекті виберіть Файл | Експортувати шаблон,
    потім виберіть ItemTemplate та дотримуйтесь майстра.

  2. Перемістіть UserControl в окрему бібліотеку класів (і виправте простори імен тощо).
    Додайте посилання до бібліотеки класів з проектів, які це потребують. Не турбуйтеся про GAC або щось інше, просто про файл DLL.

Я б не радив поміщати UserControl у звичайний ToolBox, але це можна зробити. Дивіться відповідь від @Arseny


Здається, це кращий підхід. Єдиним недоліком є ​​те, що ви не можете редагувати елемент керування візуально (або, принаймні, я не знайшов, як).
Себастьян

Неважливо, я додав шаблон як елемент, і дизайнер показує.
Себастьян,

Я повністю згоден і також настійно не рекомендую прив'язувати DLL, якщо проект, що містить UserControl, знаходиться в тому ж рішенні. І це буде працювати з DLL, тобто UserControl у проекті бібліотеки відображатиметься в будь-якому проекті WinForms, який посилається на бібліотеку (звичайно, після відновлення ;-)).
Ксан-Кун Кларк-Девіс,

2

У моєму випадку я не бачив жодного елемента керування в проекті. Тільки клацнувши правою кнопкою миші на панелі інструментів та вибравши "Показати все", я побачив їх, але все ж вони були відключені ...

Виправлено зміну типу проекту із програми Windows на ClassLibrary.


1

Основні запитання, якщо ви використовуєте дженерики в базовому елементі управління. Якщо так:

скажімо, ми маємо контроль:

public class MyComboDropDown : ComboDropDownComon<MyType>
{
    public MyComboDropDown() { }
}

MyComboDropDown не дозволить відкривати на ньому дизайнер і не відображатиметься в Панелі інструментів. Чому? Оскільки базовий контроль ще не скомпільований - коли виконується MyComboDropDown. Ви можете змінити це:

public class MyComboDropDown : MyComboDropDownBase
{
    public MyComboDropDown() { }
}

public class MyComboDropDownBase : ComboDropDownComon<MyType>
{

}

Потім після відновлення та скидання набору інструментів він повинен бачити MyComboDropDown у конструкторі, а також у панелі інструментів


0

Проблема з моїм дизайнером була 32 проти 64-бітної. Я міг додати елемент керування до вікна інструментів, слідуючи інструкціям у розділі Не вдається додати елементи керування з 64-розрядних збірок до Панелі інструментів або Використовувати в конструкторах у статті Visual Studio IDE MS KB.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.