Черный цвет фона в элементах управления, когда он был установлен на прозрачный

У меня проблема с задними цветами WPF elementHost. У меня есть winform, которая загружает на панели UserControl (Winform). В этом пользовательском элементе управления у меня есть две панели, внутри каждой из которых есть elementHost, на котором размещается пользовательский элемент управления WPF.

Изображение может быть более полезным: введите описание изображения здесь

Как видите, цвет каждого из них ЧЕРНЫЙ, в то время как элемент должен отображаться следующим образом:

введите описание изображения здесь

Я замечаю, что это произошло, когда я загружаю другие элементы управления UserControl в панели. Мне нужно знать, как это исправить.

Для каждого elementHost заданный цвет задан как Transparent, а BackColorTransparent - в True. Кроме того, я попытался изменить цвет фона во время выполнения, но все та же проблема.

ОБНОВЛЕНИЕ: Хорошо, ребята, я заметил, что если я загружаю UserControl на панели в событии Load of the Form, elementHost загружается правильно. Но если я загружаю UserControl в панель в событии нажатия кнопки, я получаю черный цвет фона.

РАБОТАЕТ:

private void frm_Configuracion_Load(object sender, EventArgs e)
    {
        /*ABM.frm_ABM_Banco_Sucursal banco_sucursal = new ABM.frm_ABM_Banco_Sucursal();
        panel1.Controls.Add(banco_sucursal);*/
    }

НЕ РАБОТАЙТЕ:

private void button3_Click(object sender, EventArgs e)
    {
        ABM.frm_ABM_Banco_Sucursal banco_sucursal = new ABM.frm_ABM_Banco_Sucursal();
        panel1.Controls.Add(banco_sucursal);
    }

Очевидно, что использование события Load было бы решением, если я использую один UserControl, а я нет.


person Andres    schedule 20.02.2013    source источник
comment
Очевидно это невозможно. Кстати, esa grilla es de winforms?   -  person Federico Berasategui    schedule 20.02.2013
comment
Да, я прочитал этот URL, но это возможно. Пользовательские элементы управления WPF прозрачны во всех моих формах. Эта ошибка просто появляется, когда я загружаю Winform UserControl в панель, и этот UserControl имеет эти ElementsHost. И да, я сделал эту сетку в Winforms   -  person Andres    schedule 20.02.2013
comment
Поздравляю =). Я не думал, что winforms способен на такие красивые вещи.   -  person Federico Berasategui    schedule 20.02.2013
comment
Спасибо. Он более настраиваемый, чем люди думают ... он имеет ограничения, но многого можно достичь.   -  person Andres    schedule 20.02.2013


Ответы (2)


Хорошо, вот как я это решаю:

Я помещаю этот код в событие Load () каждого UserControl:

elementHost.BackColorTransparent = true;

Быть elementHost каждым элементом elementHost, у которого возникла эта проблема.

Любопытно, но это свойство было установлено в true во время разработки с помощью визуального дизайнера, я думаю, что что-то может испортить его во время выполнения.

person Andres    schedule 29.03.2013

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

Мои пользовательские элементы управления были обнаружены в TableLayoutPanel, которая не содержит свойство BackColorTransparent

Чтобы решить мою проблему, у меня есть Обновить элемент управления. Фрагмент кода показан ниже:

foreach (Control subControls in this.MainTableLayoutPanel.Controls)
{
    foreach (Control control in subControls.Controls)
    {
        control.Refresh();
    }
}
person Hishaam Namooya    schedule 21.08.2016