2009-08-11 3 views
0

투명 배경을 가진 LinkLabel을 TabControl 위에 놓고 싶습니다. 탭 컨트롤에 없음 탭 페이지가 있습니다.TabControl을 통한 투명 LinkLabel

TabControl에 TabPages 이외의 컨트롤을 추가 할 수 없기 때문에 TabCertrol이 포함 된 컨트롤에 LinkLabel을 추가 한 다음 LinkLabel에서 BringToFront를 사용합니다. TabControl 위에 표시됩니다.

문제 : LinkLabel은 투명 (BackColor 속성)으로 표시되지만 TabControl의 색을 배경으로 표시하는 대신 TabControl이 포함 된 컨트롤 인 부모 색의 배경색을 표시합니다. 내가 이해하는 바로는 투명 BackColor는 부모 색을 사용한다는 의미이므로 정상적인 동작입니다.

질문 : TabControl의 배경색으로 내 LinkLabel을 표시 할 수있는 솔루션이 있습니까?

감사

+0

편집 : LinkLabel의 배경을 렌더링하기 위해 TabControlRenderer 클래스를 사용하는 것이 좋습니다. – David

답변

1

이것에 대해 잘못 될 수있다,하지만 난에 맞게 당신이 코드에서에 LinkLabel의 BackColor 속성을 변경하는 경우 (예 : 양식의 Load 이벤트로 바로 디자이너에서 설정에 반대) 생각 당신의 TabControl의 색상, 당신이 그것을 원하는 방식으로 작동합니다.

+0

답해 주셔서 감사합니다하지만 이미 내가하고있는 일 (코드에서 설정) 및 작동하지 않습니다. ( 분명히, BackColor = Transparent는 부모의 배경색을 취한다는 것을 의미합니다. – David

+0

예, BackColor를 Transparent는 실제로 부모의 BackColor를 사용한다는 것을 의미합니다. Music이 말하고자하는 것은 BackColor (런타임의 코드에서)를 tabcontrol.BackColor로 설정 한 것입니다. – NascarEd

+0

에드가 말한 것 : – MusiGenesis

0

답장을 보내 주셔서 감사합니다. 나는 네가 의미하는 것을 얻는다.

컨트롤의 BackColor 탭을 사용하면이 속성은 항상 Greyish 인 ColorSystemColors.Control을 반환하기 때문에 작동하지 않습니다. 그러나 시각적 스타일 (예 : XP의 기본 테마)을 사용할 때 TabControl의 뒷면 색상은 흰색입니다. 탭 컨트롤이 순수한 흰색이 아니라 그라디언트 흰색이므로 흰색을 사용할 수 없습니다.

+0

사용 가능한 모든 시스템 색상을 살펴보면 필요한 색상을 찾을 수 있습니다. – MusiGenesis

+0

제 생각에 시스템 색상이 아니지만 uxtheme.dll에 정의되어 있습니다. 어쩌면 해결책은 내 레이블의 배경을 그리기 위해 해당 DLL의 원시 메서드를 사용하는 것입니다 ... 너무 많이 귀찮게. 내가 찾은 투명 레이블을 사용하여 끝내고 LinkLabel처럼 보이도록 수정했습니다. http://www.codeproject.com/KB/miscctrl/SimpleLine.aspx 어쨌든 도움 주셔서 감사합니다 :) – David

관련 문제