Question

J'ai un ensemble de contrôles dérivés de System.Windows.Forms.UserControl, qui sont ensuite affichés dans un navigateur (Internet Explorer uniquement). La page dans laquelle ils se trouvent a une bordure (une div) sur laquelle je veux que les contrôles soient placés "sous", mais ils sont tous dessinés dessus.

J'ai vu des pages affirmant que ce que je devais faire, c'était rendre les UserControls 'sans fenêtre', et des exemples montrant comment le faire dans VisualBasic ou dans SilverLight, mais rien ne m'aidait (j'utilise C ++ et C # ici. )

Alors, des idées?

Était-ce utile?

La solution

Il y avait un truc qui était commun pour placer des divs sur des éléments natifs dans IE. Vous mettez un iframe transparent ne contenant rien sous le div que vous essayez de créer;

<!-- windows forms garbage here -->

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

Ceci placerait la superposition dans une nouvelle couche directx (à ne pas confondre avec la couche de navigateur, c'est-à-dire l'indice z).

EDIT: pourquoi cela n'a pas fonctionné: "L'autre technique, qui utilise l'attribut ALLOWTRANSPARENCY de l'élément IFRAME, a pour objectif de rendre transparent l'arrière-plan de la page intérieure de l'IFRAME, de sorte que le contenu à l'intérieur de l'IFRAME peut avoir une transparence. Cependant, ce mode modifie la nature de l’IFRAME et ne nous permet plus de bloquer les contrôles fenêtrés . "

Le correctif consiste à utiliser un filtre alpha pour l'effet de transparence au lieu de ALLOWTRANSPARENCY.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top