Да и нет.
Во-первых, ознакомьтесь с этой статьей от почтенного Рэймонда Чена: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/11/371042.aspx
Да. Вы можете создавать «элементы управления»которые не происходят от Control
.Я создал несколько безоконных элементов управления в своем приложении, которые изначально поддерживают щелчки, наслоения и т. Д., Я рисую их в внеэкранный буфер, а затем рисую их непосредственно на каком-либо родительском Form
или Control
(например, PictureBox
),Это легко сделать, но не просто, так как вам нужно будет управлять всем самостоятельно в коде.
Нет. Любые безоконные элементы управления не будут поддерживаться в конструкторе Windows Forms ни для одного изControl
разработчики элементов управления (например, размещение их на панели или форме), поэтому у вас не будет перетаскивания дизайна формы.
Как указал Ганс, такими примерами являются ToolStrip
и MenuStrip
(элемент управления без окон).Обратите внимание, что когда вы создаете новый MenuStrip
на Form
, MenuStrip
помещается в область компонентов под формой.MenuStrip
имеет пользовательский набор классов Designer, связанных с ним, для поддержки пользовательского рисования и функциональности «Тип здесь», а также диалоговых окон для добавления и удаления пунктов меню.Обратите внимание, что «дочерние» безоконные элементы управления, такие как ToolStripButton
, недоступны в панели инструментов для поддержки перетаскивания непосредственно в форму - об этом знает только пользовательский дизайнер.Пользовательский конструктор для MenuStrip
также поддерживает выбор дочерних элементов управления без окон, чтобы вы могли редактировать свойства каждого элемента в окне «Свойства».
Не могу себе представить, что это подходит для вашей ситуации (если вы не создаете некоторые элементы управления для перепродажи), но если вы очень решительны, вы можете создать дизайнерскую поддержку почти таким же образом для вашего набора элементов управления без окон:
- Создать классэто происходит от
Component
, который будет использоваться для управления вашими элементами управления без окон.Например, вы можете назвать этот класс WindowlessWidgetManager
.После компиляции этот элемент управления появится в вашем наборе инструментов.WindowlessWidgetManager может содержать коллекцию ваших безоконных элементов управления и обеспечивать рисование и другую поддержку пользовательского интерфейса для холста, например Form
или PictureBox
. - Создать класс конструктора, производный от
ComponentDesigner
, который поддерживаеттакие вещи, как добавление и удаление пользовательских элементов управления во время разработки.Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/system.componentmodel.design.componentdesigner(v=VS.90).aspx
Это очень длительный процесс с множеством предостережений, но если это то, чего вы хотите достичь, функциональность есть.