2

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

图片可能更有帮助: 在此处输入图像描述

如您所见,它们中的每一个的背景色都是黑色,而元素应显示如下:

在此处输入图像描述

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

每个 elementHost 都将其背景颜色设置为透明,并将背景颜色透明设置为 True。另外,我尝试在运行时更改背景颜色,但仍然是同样的问题。

更新: 好的,我注意到如果我在表单的加载事件中加载面板中的用户控件,则 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);
    }

显然,仅当我使用一个 UserControl 时,使用 Load 事件才是解决方案,但我不是。

4

2 回答 2

1

好的,这就是我解决它的方法:

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

elementHost.BackColorTransparent = true;

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

它很好奇,但该属性在设计时使用视觉设计器设置为 true,我认为在执行过程中可能会出现一些问题。

于 2013-03-29T02:46:53.057 回答
0

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

在不包含属性BackColorTransparent的 TableLayoutPanel 中找到了我的用户控件

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

foreach (Control subControls in this.MainTableLayoutPanel.Controls)
{
    foreach (Control control in subControls.Controls)
    {
        control.Refresh();
    }
}
于 2016-08-21T19:42:28.950 回答