Прозрачность в композитных элементах управления? - PullRequest
0 голосов
/ 07 октября 2009

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

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

Должен ли я что-то делать, чтобы получить тот же эффект / поведение в комбинированном элементе управления?

РЕДАКТИРОВАТЬ: Левая сторона показывает элемент управления в конструкторе, правая сторона показывает элемент управления во время выполнения.

alt text

Ответы [ 2 ]

0 голосов
/ 08 октября 2009

Возможно, Квинтин прав, и что-то не так с поддержкой конструктора вашего элемента управления, то есть вы создали ControlA и расширяете его до ControlB, добавляя кнопку во время разработки. Когда вы устанавливаете ControlB, кнопка не видна.

Можете ли вы проверить во время выполнения, используя точки останова / утверждения / и т. Д., Что: *

  1. ChildButton существует.
  2. ChildButton является членом CompositeControl.Controls.
  3. ChildButton местоположение "в поле зрения" CompositeControl.
  4. ChildButton видно.

Если бы это был я, я бы установил точку останова в конструкторе элемента управления и перешел бы к InitializeComponent(), проверяя, все ли создано и добавлено правильно. Если ChildButton существует и имеет ссылку в CompositeControl.Controls, а его местоположение находится в поле зрения, я затрудняюсь объяснить, почему он не отображается.

0 голосов
/ 07 октября 2009

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

Не забудьте реализовать IContainerControl и украсить объект соответствующим атрибутом конструктора для поддержки контейнера конструктора IE:

[Designer("System.Windows.Forms.Design.ParentControlDesigner,System.Design", typeof(System.ComponentModel.Design.IDesigner))]
...