Как поместить элемент управления без окон поверх элемента управления Windows?

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

Есть ли способ?

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

5 ответов

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

Если у вас есть установочный носитель VB6, есть нарисованные (без окон) версии элементов управления, включая TextBox, который вы можете использовать, который (вероятно) будет делать то, что вы хотите; http://support.microsoft.com/kb/184687

Пользовательский пользовательский контроль какого-то рода, если возможно лучше... чем именно вы хотите наложить текстовое поле?

Элемент управления изображениями считается графическим элементом управления, как и фигуры, поэтому он всегда уступает текстовым элементам управления. Если вы действительно хотите прозрачное изображение, вы можете вместо этого использовать форму Microsoft 2.0 (только если она у вас есть). Изображения могут быть поверх текстовых полей, и вы можете сделать их прозрачными, установив для Backstyle значение Transparent(0).

Полностью другой подход к моему другому ответу (отсюда и отдельный ответ), но вы можете установить AutRedraw и ClipControls в вашей форме в false, и это позволит элементу управления Image отображаться на том же слое, что и оконный элемент управления. В некоторых случаях вы можете получить некоторую нестабильную перерисовку, но для быстрого решения вы можете попробовать это.

http://msdn.microsoft.com/en-us/library/aa733621(v=vs.60)

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

Сначала добавьте новый USerControl в ваше приложение. Дайте ему имя, например ImageEx, PictureEx или TransparntImage. Есть несколько свойств, которые вам нужно будет использовать. Убедитесь, что элемент управления Windowed, так что он может располагаться поверх других оконных элементов управления. Найдите свойство MaskColor и установите для него значение Голубой (или любой другой цвет, который вы выберете, чтобы указать прозрачную область. Может быть дополнительное свойство, включающее поведение маскирования, просто просмотрите свойства. Установите цвет фона элемента управления на цвет маски MaskColor. На данный момент у вас есть невидимый элемент управления.В моем элементе я рисовал поверх поверхности для аннотаций, но вы можете PaintPicture или, возможно, даже установить свойство изображения для действительно простого подхода.

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


Некоторые ссылки:

MaskColor Property

MackPicture Свойство

1) Удалите все ваши текстовые поля, метки и... (но запомните их имя и местоположение в форме)

2) Перейдите (проект> компоненты) и отметьте (Библиотека объектов Microsoft Forms 2.0), затем нажмите кнопку ОК.

3) Теперь вы можете увидеть новые элементы управления по умолчанию в панели инструментов...

4) Используйте его элементы управления textbox и label вместо элементов управления по умолчанию

5) Щелкните правой кнопкой мыши на вашем контроле изображений, затем нажмите (Bring To Front)

Другие вопросы по тегам