Вопрос

У меня есть набор элементов управления, полученных из System.Windows.Forms.UserControl, которые затем отображаются в браузере (только для Internet Explorer). Страница, на которой они находятся, имеет рамку (div), которую я хочу, чтобы элементы управления находились «под», но все они рисуются поверх нее.

Я видел страницы, утверждающие, что мне нужно сделать UserControls «без окон» и примеры того, как это сделать в VisualBasic или SilverLight, но ничего полезного для меня (я использую C ++ и C # здесь )

Итак, есть идеи?

Это было полезно?

Решение

Был хитрость, которая обычно использовалась для размещения элементов div над нативными элементами в IE. Вы помещаете прозрачный iframe, в котором ничего нет, под div, который вы пытаетесь поднять;

<!-- windows forms garbage here -->

<iframe id="underlay" src="javascript:false" frameborder="0" style="Alpha(style=0,opacity=0)"></iframe>
<div id="overlay"></div>

Это подтолкнет оверлей к новому слою directx (не путать со слоем браузера, то есть z-index).

EDIT: Обнаружил, почему это не сработало: " Другой метод, использующий атрибут ALLOWTRANSPARENCY элемента IFRAME, на самом деле относится к тому, чтобы сделать фон внутренней страницы IFRAME прозрачным, чтобы любой контент внутри IFRAME может иметь прозрачность. Однако этот режим меняет природу IFRAME и больше не служит нашей цели для блокировки оконных элементов управления . & Quot;

Исправление заключается в использовании альфа-фильтра для эффекта прозрачности вместо ALLOWTRANSPARENCY.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top