الخلفية السوداء قبل تحميل التحكم في WPF عند استخدام ElementHost

StackOverflow https://stackoverflow.com/questions/2087406

سؤال

أنا أستخدم WPF في WinForms مع ElementHost. عندما يتم تحميل النموذج ، يكون هناك وميض من الخلفية السوداء حيث يكون جهاز ElementHost على وشك التحميل. هذا يبدو نوعا من السيئ. أي اقتراحات حول كيفية التخلص من هذا؟

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

المحلول

إخفاء العنصر (الرؤية = مخفية) حتى يتم تحميل التحكم في WinForms بالكامل ...

نصائح أخرى

تحتاج أولاً إلى تحكم العرض مع الحدود الفارغة لأول مرة لتجنب الخفقان الأسود

if (!_control.Created && _control.BackColor != Color.Transparent)
{
    _control.Bounds = Rectangle.Empty;
    _control.Show();
}

// set control bounds and show it
Rectangle bounds = GetBounds(context, rect);
if (_control.Bounds != bounds)
    _control.Bounds = bounds;
if (!_control.Visible)
    _control.Show();

أعلم أن هذا قد تمت الإجابة عليه بالفعل والسؤال قديم ولكن لم يعمل أي من الإجابات المقدمة بنفسي وبعد فترة طويلة من استكشاف الأخطاء وإصلاحها. لقد وجدت أخيرًا إجابة أسهل.

إذا قمت بإنشاء فئة تمتد من مضيف العنصر وفي المُنشئ الأولي. يمكنك تعيين حدث تحميل للحاوية المضيفة. الحاوية المضيفة هي اللوحة التي يتم عرضها على الطفل الذي يتم عرضه على رأسه. من هناك ، ما عليك سوى تعيين لون الخلفية للحاويات المضيفة إلى كونه من العنصر يستضيف لون خلفية الوالدين.

مثله

    using System.Windows;
    using System.Windows.Forms;
    using System.Windows.Media;
    public class MyElementHost : ElementHost
    {
       public MyElementHost()
        {
            this.HostContainer.Loaded += new RoutedEventHandler(HostPanelLoad);
        }

        public void HostPanelLoad(object sender, RoutedEventArgs e)
        {
            System.Drawing.Color parentColor = this.Parent.BackColor;
            this.HostContainer.Background = new SolidColorBrush(Color.FromArgb(parentColor.A, parentColor.R, parentColor.G, parentColor.B));
        }
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top