Черный фон перед загрузкой wpf-контроллера при использовании ElementHost - PullRequest
1 голос
/ 18 января 2010

Я использую WPF в WinForms с ElementHost. Когда форма загружается, появляется вспышка черного фона, где ElementHost собирается загрузить. Это выглядит плохо Любые предложения о том, как избавиться от этого?

Ответы [ 3 ]

5 голосов
/ 18 января 2010

Скрыть элемент (Visibility = Hidden) до полной загрузки элемента управления WinForms ...

0 голосов
/ 15 марта 2019

Я знаю, что на этот вопрос уже был дан ответ, и вопрос старый, но ни один из представленных ответов не сработал для меня и после долгого времени устранения проблемы. Я наконец нашел более легкий ответ.

Если вы строите класс, начиная с Element Host и в исходном конструкторе. Вы можете установить событие загрузки для хост-контейнера. Хост-контейнер - это панель, над которой отображается дочерний элемент-хост. Оттуда просто установите цвет фона Host Containers на цвет фона Element Hosts Parents.

Как это

    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));
        }
    }
0 голосов
/ 23 февраля 2010

сначала вам нужно сначала показать элемент управления с пустыми границами, чтобы избежать мерцания черного

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...