Черный фон перед загрузкой элемента управления 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();

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

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

Так

    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