我遇到了WPF elementHost背景的问题。我有一个winform,在面板中加载UserControl(Winform)。在该用户控件中,我有两个面板,每个面板中都有一个承载WPF用户控件的elementHost。
图片可能更有帮助:
正如您所看到的,每个背景颜色都是黑色,而元素应该像这样显示:
我注意到当我在面板中加载其他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事件就是解决方案,但我不是。
答案 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();
}
}