سؤال

لدي مجموعة من عناصر التحكم المستمدة من System.Windows.Forms.UserControl، والتي يتم عرضها بعد ذلك في المتصفح (Internet Explorer فقط).تحتوي الصفحة الموجودة بها على حد (div) أريد أن تكون عناصر التحكم "تحته"، ولكنها جميعها ترسم فوقه.

لقد رأيت صفحات تدعي أن ما يجب علي فعله هو جعل UserControls "بدون نوافذ"، وأمثلة حول كيفية القيام بذلك في VisualBasic أو SilverLight، ولكن لا شيء مفيد بالنسبة لي (أنا أستخدم C++ وC# هنا)

لذا، أي أفكار؟

هل كانت مفيدة؟

المحلول

كانت هناك خدعة كانت شائعة لوضع div على العناصر الأصلية في IE.يمكنك وضع إطار 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).

يحرر: وجدت لماذا لم ينجح:"التقنية الأخرى، التي تستخدم سمة ALLOWTRANSPARENCY الخاصة بعنصر IFRAME، تتعلق في الواقع بجعل خلفية الصفحة الداخلية لـ IFRAME شفافة، بحيث يمكن لأي محتوى داخل IFRAME أن يتمتع بالشفافية.لكن، يغير هذا الوضع طبيعة IFRAME ولم يعد يخدم غرضنا المتمثل في حظر عناصر التحكم ذات الإطارات."

الإصلاح هو استخدام عامل تصفية ألفا لتأثير الشفافية بدلاً من السماح بالشفافية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top