문제

TabControl 내부의 탭 페이지에 트랙 바 컨트롤이 있습니다. 트랙 바의 배경은 회색으로 그려지고있는 동안 탭 페이지는 흰색으로 그려집니다. 트랙 바의 백 콜러 속성을 투명으로 설정할 방법은 없으며 트랙 바의 드로우 모드 속성이 없기 때문에 도면을 무시할 수 없습니다. 트랙 바를 맞추기 위해 어떤 옵션이 필요합니까? 왜 시각적 스타일을 지원하지 않습니까?

도움이 되었습니까?

해결책

당신은 그것을보고 싶을 수도 있습니다 TransparentTrackbar CodePlex에 프로젝트.

다른 팁

단순한

class MyTransparentTrackBar : TrackBar
{
    protected override void OnCreateControl()
    {
        SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        if (Parent != null)
            BackColor = Parent.BackColor;

        base.OnCreateControl();
    }
}

나는 또한 이것에 직면했다 (탭 제어에 투명한 백백 트랙 바가 필요했는데, 이는 비주얼 스타일이 활성화되고 비활성화된다. 그리고 이것은 나를 위해 효과가있었습니다.

여기서 방해하지는 않지만 위의 제안 중 어느 것도 나에게 효과가 없었습니다. 트릭은 다음과 같은 줄이었습니다.

private const int WM_DWMCOMPOSITIONCHANGED = 0x031A;
private const int WM_THEMECHANGED = 0x031E;

protected override void OnVisibleChanged(EventArgs e)
{
    Color color = this.BackColor;
    trackBarQuality.BackColor = Color.FromArgb(color.R, color.G, color.B);
}

protected override void WndProc(ref Message m)
{
    if (m.Msg == WM_DWMCOMPOSITIONCHANGED || m.Msg == WM_THEMECHANGED)
        OnVisibleChanged(new EventArgs());

    base.WndProc(ref m);
}

그래서 나는 기본적으로 배경색에서 알파 채널을 제거합니다. 그러나 여전히 Vista와 Win 7으로 이것을 테스트해야합니다.

명백한 솔루션은 트랙 바의 백콜러를 System-ControllightLight로 설정하는 것 같습니다.

(그러나 4 살짜리 질문에 대한 명백한 해결책의 문제는 아마도 내가 무언가를 오해했다는 것을 암시한다는 것입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top