2012-03-22 66 views
0

好吧,我仍然在學習這個..我有谷歌,做了一些不同的研究,但沒有找到我在找什麼。這就是我想要做的。添加一個狀態欄,顯示背景中的當前顏色。無論用戶更改背景顏色的方式(上下文菜單,菜單欄,按鈕),都應該更新。改變顏色到staus酒吧

我已經添加了狀態欄,但我不確定如何使用顏色或使用上下文菜單單擊按鈕時顯示它。所以我必須在這些代碼中的每一箇中更改或使用狀態欄進行公開課。

我要上傳的圖片是什麼,我需要這個做... enter image description here

如果你看一下在底部它說,紅色的背景,它也得到了強調紅色。那麼當你點擊藍色或綠色時,我也需要改變它。什麼是最好的方式來做到這一點。

這是我的代碼從工具條:

private void toolStripButton1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Red; 

    } 

    private void toolStripButton2_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Green; 
    } 

    private void toolStripButton3_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Blue; 
    } 

此代碼是從我的上下文菜單:

private void redToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Red; 
    } 

    private void greenToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Green; 
    } 

    private void blueToolStripMenuItem1_Click(object sender, EventArgs e) 
    { 
     this.BackColor = System.Drawing.Color.Blue; 
    } 

我想現在要弄清楚的狀態欄。

編輯我弄清楚我必須做什麼。我需要回到我的表單頁面上並編輯工具條。感謝幫助男人和女孩。

+0

分享一些代碼與我們同在) – Stormenet 2012-03-22 11:48:31

+0

這是家庭作業嗎? – gbianchi 2012-03-22 11:55:29

回答

1

最好的解決方案是對主窗體的背景顏色變化作出反應。您可以通過處理BackColorChanged事件或在主窗體類中重寫OnBackColorChanged受保護的方法來執行此操作。

2

使所有的按鈕使用相同的事件。然後檢查發件人。如果分配greenButton,blueButton等標記的按鈕,那麼你可以使用這個:

private void ColorButtons_Click(object sender, EventArgs e) 
{ 
    Control item = (Control)sender; 

    if(item.tag == "greenColor") 
     this.BackColor = Color.Green; 
    else if(item.tag == "blueColor") 
     this.BackColor = Color.Blue; 
    // and so on 
} 
+0

按鈕在頂部,那裏已經有了顏色。那麼我需要做一個新的私人無效事件嗎? – shan 2012-03-22 11:59:33

+0

我編輯了我的答案。再讀一遍。 將該代碼添加到您的表單中,然後選擇每個按鈕並使用該事件。另外,將「greenButton,blueButton」等添加到按鈕的名稱中。 – farooq 2012-03-22 12:04:35

+0

我不會低估這一點,但如果你必須爲20種顏色做這個,這個解決方案是不好的。這個名稱也應該是不相關的..也許使用控件的標籤屬性?或者更好,只是拿起它的背景顏色;) – gbianchi 2012-03-22 12:10:28

1

可以使用的方法來改變顏色,在這種方法中,將自己的狀態欄的文本和/或顏色。

所以不是(例如)

this.BackColor = System.Drawing.Color.Blue; 

設置你會打電話

this.SetColor(System.Drawing.Color.Blue); 

SetColor(Color),你處理的文本改變。

例如,你可以使用此方法:

private void SetColor(System.Drawing.Color c) 
{ 
    this.BackColor = c; 
    this.toolStripStatusLabel1.Text = c.Name; 
} 
1

Altough不使用分辯一個好方法現在(其他答案有更好的方法),你可以很容易地解決它。由於您想要更改狀態欄內控件的背景顏色,因此可以在幾個位置執行此操作:

您可以有一個可以接收顏色並根據該顏色更改控件的功能。在您的示例中,條形條上的標籤是紅色的,並且您已經在設計器上更改它。那麼,在運行時你可以做同樣的事情,使用代碼;)。該標籤有一個名稱。只需添加一個功能是這樣的:

private void ChangeColor(mycolor as System.Drawing.Color) 
{ 
    yourlabelcontrol.BackColor = mycolor; 
    yourlabelcontrol.Text = mycolor.Name; 
} 

您也可以在不改變顏色的每一個動作執行此。

你可以有一個改變一切的顏色一個函數(如這一個,但改變寄託都顏色)