2013-02-20 30 views
2

WPF 요소에 문제가 발생했습니다 .Host backcolors. Winform은 UserControl (Winform)을 패널에로드합니다. 해당 사용자 정의 컨트롤에는 두 개의 패널이 있는데, 각각의 내부에는 WPF usercontrol을 호스팅하는 elementHost가 있습니다.투명도로 설정되었을 때 컨트롤의 검정색 배경색

사진이 더 도움이 될 수 있습니다

enter image description here

나는주의 사항 : 당신이 볼 수 있듯이 요소는 다음과 같이 표시되어야합니다 동안 enter image description here

은, 그들 각각의 배경색은 검은 색 패널에 다른 UserControls를로드 할 때 이런 일이 발생했습니다. 이 문제를 해결하는 방법을 알아야합니다.

각 elementHost의 Backcolor는 Transparent로 설정되고 BackColorTransparent는 True로 설정됩니다. 또한 런타임에 백 컬러를 변경하려고했지만 여전히 동일한 문제가 발생합니다.

는 UPDATE : 좋아 얘들 아, 나는 내가 양식의 이벤트로드에있는 패널에서 해당 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);*/ 
    } 

DONT WORK :

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을 사용하지만, 미안 아닌 경우 해결책이 될 것로드 이벤트를 사용. 좋아

+0

[명백하게 (http://social.msdn.microsoft.com/forums/en-US/wpf/thread/1ab1d4de-19b5-4342-9c8f-1f82a13f0ca5/) 그건 불가능합니다. 그건 그렇고, 그루 폼은 위풍 당당합니까? –

+0

예 해당 URL을 읽었지만 가능합니다. WPF 사용자 컨트롤은 모든 형태로 투명합니다. 이 오류는 패널에 Winform UserControl을로드 할 때 나타나고 UserControl에는 해당 ElementsHost가 있습니다. 그리고 네, Winforms에서 그리드를했습니다 – Andres

+0

Congrats =).나는 winforms가 좋은 좋은 일을 할 수 있다고 생각하지 않았다. –

답변

1

이 내가 그것을 해결하는 방법입니다 : 그 문제가있다

elementHost.BackColorTransparent = true; 

존재 elementHost 모든 elementHost 요소 :

내가로드에있는 모든 UserControl을의() 이벤트를이 코드를 넣어.

궁금한 점이 있지만 시각적 디자이너를 사용하여 디자인 타임에이 속성을 true로 설정 했으므로 실행 중에 문제가 생길 수 있습니다.

0

내 UI를 업데이트하기 위해 버튼을 클릭 할 때 내 사용자 컨트롤이 검은 색으로 변하는 동일한 문제가 발생했습니다.

내 사용자 컨트롤이 내 문제를 해결하기 위해 속성 BackColorTransparent

을 포함하지 않는 이는 TableLayoutPanel에서 발견되었다, 나는 새로 고침 컨트롤이 있습니다. 코드 조각 아래 도시된다

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