2014-09-13 91 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