سؤال

ولدي السيطرة TrackBar على TabPage داخل TabControl علبة. يتم رسمها على خلفية TrackBar في الرمادي بينما يتم رسم TabPage بيضاء. لا توجد وسيلة لتعيين الخاصية BackColor في TrackBar شفافة، وأنا لا يمكن تجاوز الرسم لأنه لا يوجد خاصية DrawMode لTrackBar. ما الخيارات المتوفرة لدي لجعل صالح TrackBar في؟ لماذا لا تدعم الأنماط المرئية؟

هل كانت مفيدة؟

المحلول

وأنت قد ترغب في النظر في TransparentTrackBar المشروع على كود بلاكس.

نصائح أخرى

وبسيط

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

        base.OnCreateControl();
    }
}

وأنا أيضا واجهت هذا (في حاجة إلى trackbar شفافة الخلفية على السيطرة التبويب، التي ستعمل مع كل visualstyles تمكين والمعوقين). وهذا العمل بالنسبة لي.

ولن تتدخل هنا، ولكن أيا من الاقتراحات المذكورة أعلاه عملت بالنسبة لي. ما لم الحيلة كانت على النحو التالي:

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);
}

وهكذا أنا في الأساس القضاء على قناة ألفا من لون الخلفية. لا تزال لديها لاختبار هذا مع ويندوز فيستا ويندوز 7، وإن كان.

والحل واضح ويبدو أن وضع ون_الخلفية وTrackBar لنظام-ControlLightLight.

(ولكن المشكلة مع حل واضح لمسألة البالغ من العمر أربع سنوات هو أنه ربما يعني أنني قد يساء فهمه شيئا).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top