Pregunta

Tengo un montón de controles derivados de System.Windows.Forms.UserControl, que luego se muestran en un navegador (solo Internet Explorer). La página en la que se encuentran tiene un borde (un div) en el que quiero que los controles "debajo", pero todos se dibujan encima de él.

He visto páginas que afirman que lo que necesito hacer es hacer que los UserControls estén 'sin ventanas', y ejemplos de cómo hacerlo en VisualBasic o en SilverLight, pero nada útil para mí (estoy usando C ++ y C # aquí )

Entonces, ¿alguna idea?

¿Fue útil?

Solución

Había un truco que solía ser común para poner divs sobre elementos nativos en IE. Pones un iframe transparente sin nada debajo del div que intentas aumentar;

<!-- windows forms garbage here -->

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

Esto empujaría la superposición a una nueva capa de directx (que no debe confundirse con la capa del navegador, es decir, el índice z).

EDITAR: descubrió por qué no funcionó: " La otra técnica, que utiliza el atributo ALLOWTRANSPARENCY del elemento IFRAME, en realidad se refiere a hacer que el fondo de la página interior del IFRAME sea transparente, de modo que El contenido dentro del IFRAME puede tener transparencia. Sin embargo, este modo cambia la naturaleza del IFRAME y ya no sirve para bloquear controles en ventana . & Quot;

La solución es usar un filtro alfa para el efecto de transparencia en lugar de ALLOWTRANSPARENCY.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top