简体   繁体   中英

Vertical Scrollbar color does not change

I am a newbie in C sharp. I created a vertical scrollbar (VScrollBar). I wanted to change the color of the scrollbar's Backcolor. As it is inherited from Control, when i changed the color it does not take any effect. In the InitializeComponents()->

this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.vScrollBar1.Location = new System.Drawing.Point(472, -41);
this.vScrollBar1.Name = "vScrollBar1";
this.vScrollBar1.Size = new System.Drawing.Size(17, 80);
this.vScrollBar1.TabIndex = 15;
this.panel1.Controls.Add(vScrollBar1);

In the Constructor->

this.vScrollBar1.BackColor= Color.Black;     //<--here is the back color property
this.Invalidate();

Any Suggestions?

Not as simple as you might think, sorry:(

Where does the Backcolor property come from?

You have to understand that System.Windows.Forms.VScrollBar inherits from System.Windows.Forms.ScrollBar that inherits from System.Windows.Forms.Control that got a Backcolor property.

Why doesn't it work?

The System.Windows.Forms.ScrollBar is just a wrapper around the control provided by the Win32 API. Changing the Scrollbar Backcolor is not included there.

What to do?

Basicly you have to inherit from System.Windows.Forms.Control and create your own scrollbar control.

Articles: http://www.codeproject.com/Articles/41869/Custom-Drawn-Scrollbar

Yep, that is totally a reason why people prefer WPF.

See my answer mentioning a custom ScrollBar control that supports custom background colors and themes https://stackoverflow.com/a/73613059/5514131

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM