0

我有一堆从 System.Windows.Forms.UserControl 派生的控件,然后显示在浏览器中(仅限 Internet Explorer)。他们所在的页面有一个边框(一个 div),我希望控件位于“下方”,但它们都在它上面绘制。

我已经看到页面声称我需要做的是让 UserControls '无窗口',以及如何在 VisualBasic 或 SilverLight 中做到这一点的示例,但对我没有任何帮助(我在这里使用 C++ 和 C#)

那么,有什么想法吗?

4

1 回答 1

0

在 IE 中将 div 放置在原生元素上曾经很常见。你在你想要提升的 div 下放置了一个没有任何内容的透明 iframe;

<!-- 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)。

编辑:找到它不起作用的原因:“使用 IFRAME 元素的 ALLOWTRANSPARENCY 属性的另一种技术实际上涉及使 IFRAME 的内部页面背景透明,以便 IFRAME 内的任何内容都可以具有透明度。但是,这个模式改变了 IFRAME 的性质,它不再符合我们屏蔽窗口控件的目的。”

解决方法是使用 alpha 过滤器来实现透明效果,而不是 ALLOWTRANSPARENCY。

于 2009-08-03T01:41:30.693 回答