Цвет вертикальной полосы прокрутки не меняется

Я новичок в диезе. Я создал вертикальную полосу прокрутки (VScrollBar). Я хотел изменить цвет задней полосы полосы прокрутки. Как это унаследовано от Control, когда я изменил цвет, это не имеет никакого эффекта. В 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);

В конструкторе->

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

Какие-либо предложения?

2 ответа

Не так просто, как вы думаете, извините:(

Откуда берется свойство Backcolor?

Вы должны понимать, что System.Windows.Forms.VScrollBar наследуется от System.Windows.Forms.ScrollBar, который наследуется от System.Windows.Forms.Control, который получил свойство Backcolor.

Почему это не работает?

System.Windows.Forms.ScrollBar - это просто оболочка вокруг элемента управления, предоставляемого Win32 API. Изменение цвета полосы прокрутки там не включено.

Что делать?

В основном вы должны унаследовать от System.Windows.Forms.Control и создать свой собственный элемент управления полосы прокрутки.

Статьи: http://www.codeproject.com/Articles/41869/Custom-Drawn-Scrollbar

Да, это причина, по которой люди предпочитают WPF.

См. мой ответ, в котором упоминается пользовательский элемент управления ScrollBar, который поддерживает пользовательские цвета фона и темы https://stackoverflow.com/a/73613059/5514131

Другие вопросы по тегам