Какие есть варианты фильтрации пользовательских элементов управления .net из набора инструментов WinForms в Visual Studio 2008? - PullRequest
1 голос
/ 20 января 2009

Visual Studio 2008 намного лучше обнаруживает и добавляет элементы управления из проектов на панель инструментов для использования в конструкторе форм. Если у вас есть сборка с типом, производным от UserControl или DataSet, она автоматически обнаружит и добавит этот элемент управления на панель инструментов для разработки форм. Это на немного лучше, чем в старой системе 2005 года, которая заставляла вас вручную добавлять элементы управления и иногда их забывала и т. Д.

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

  1. Существует ли какой-либо атрибут или другой механизм, препятствующий появлению панели инструментов (который иначе не повлияет на функциональность)?
  2. Повысит ли фильтрация с использованием такого механизма производительность при автоматическом обнаружении новых типов, которые ДОЛЖНЫ быть в наборе инструментов? (Я знаю, что вы можете отключить автоопределение, но во многих случаях его приятно иметь)
  3. Встречались ли другие с таким раздражением в больших решениях (со многими файлами csproj / vbproj)?

Редактировать: Спасибо всем! Я знал, что это должно быть просто (и, вероятно, было атрибутом), но это заполняет пробел. Приятно знать, что я был в хорошей компании, не зная о ToolBoxItem (false).

Ответы [ 2 ]

2 голосов
/ 20 января 2009

Следующий атрибут должен скрывать его из панели инструментов:

[ToolboxItem(false)]

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

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

1 голос
/ 20 января 2009

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

[ToolboxItem (ложь)]

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

...