控件中的黑色背景设置为透明时

时间:2013-02-20 18:48:07

标签: c# winforms user-controls elementhost backcolor

我遇到了WPF elementHost背景的问题。我有一个winform,在面板中加载UserControl(Winform)。在该用户控件中,我有两个面板,每个面板中都有一个承载WPF用户控件的elementHost。

图片可能更有帮助: enter image description here

正如您所看到的,每个背景颜色都是黑色,而元素应该像这样显示:

enter image description here

我注意到当我在面板中加载其他UserControl时发生这种情况。我需要知道如何解决这个问题。

每个elementHost的背景颜色设置为Transparent,BackColorTransparent为True。 另外,我试图在运行时更改背景颜色,但仍然存在同样的问题。

更新 好的,我注意到如果我在Form的事件Load中加载UserControl,则elementHost正确加载。但是,如果我在按钮点击事件中加载面板中的UserControl,我会得到那个黑色的背景颜色。

WORKS:

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);
    }

显然,如果我使用一个UserControl,那么使用Load事件就是解决方案,但我不是。

2 个答案:

答案 0 :(得分:1)

好的,我就是这样解决的:

我将此代码放在每个UserControl的Load()事件中:

elementHost.BackColorTransparent = true;

作为elementHost遇到麻烦的每个elementHost元素。

它的好奇,但是使用视觉设计师在设计时将该属性设置为true,我认为在执行过程中可能会弄乱它。

答案 1 :(得分:0)

我遇到了同样的问题,当我点击按钮更新我的UI时,我的用户控件变黑了。

我的用户控件位于TableLayoutPanel中,该TableLayoutPanel不包含属性 BackColorTransparent

为了解决我的问题,我有刷新控件。代码段如下所示:

foreach (Control subControls in this.MainTableLayoutPanel.Controls)
{
    foreach (Control control in subControls.Controls)
    {
        control.Refresh();
    }
}