2012-03-22 65 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; 
} 

您也可以在不改变颜色的每一个动作执行此。

你可以有一个改变一切的颜色一个函数(如这一个,但改变寄托都颜色)