2014-09-13 101 views
-1

我是C sharp中的新手。我创建了一个垂直滚动条(VScrollBar)。我想改变滚动条Backcolor的颜色。因为它是从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); 

在Constructor->

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

有什么建议?

+0

请张贴您的代码 – VladL 2014-09-13 10:10:04

+0

I在initializecompotents() - > 1.vScrollBar.BackColor = Color.Black; 2.vScrollBar.Invalidate(); – WildPoisoned 2014-09-13 10:15:39

+0

将来在问题中编写代码。我们很容易阅读它,并且您不会被拒绝投票。希望我的回答能帮助你。 – mybirthname 2014-09-13 10:53:24

回答

1

并不像你想象的那么简单,对不起:(

哪里背景色属性从何而来?

你必须明白,System.Windows.Forms.VScrollBar从System.Windows继承.Forms.ScrollBar是从Control是有一个背景色属性继承。

为什么不工作?

System.Windows.Forms.ScrollBar只是Win32 API提供的控件的一个包装。 更改滚动条Backcolor不包括在那里。

怎么办?

基本上,你必须从System.Windows.Forms.Control继承并创建自己的滚动条控件。

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

是的,这完全是一个人之所以喜欢WPF。

+0

我完全同意你的看法,现在人们更喜欢WPF一天。但是,现在我的问题是,如果Button从控件继承而且背景色可以更改,那么为什么不使用滚动条?并感谢您的链接,我用我自己的油漆做了简单的滚动条。 – WildPoisoned 2014-09-17 17:25:42

+0

与其他任何控件一样,您也可以处理滚动条控件的WM_CTLCOLOR消息。你可以设置背景颜色,它的工作原理 - 种类。当控件绘制滚动条组件时,它会忽略由WM_CTLCOLOR处理程序设置的颜色,而是使用系统颜色。 – BroVirus 2014-09-18 02:04:17