将颜色更改为状态栏

时间:2012-03-22 11:45:43

标签: c#

好的我还在学习这个..我有谷歌并做了一些不同的研究,但没有找到我要找的东西。这就是我想要做的。添加一个状态栏,显示当前的颜色背景。无论用户改变背景颜色的方式(上下文菜单,菜单栏,按钮),都应该更新。

我已经添加了状态栏。但是当我点击带有颜色的按钮或使用上下文菜单时,我不确定如何显示它。因此,我必须使用状态栏更改或创建公共类。

我要上传一张我需要做的事情...... 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;
    }

我正试图弄清楚状态栏。

编辑我弄清楚我必须做什么。我需要返回我的表单页面并编辑工具条。感谢帮助男生和女生。

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

最佳解决方案是对主窗体的背景颜色变化做出反应。您可以通过处理BackColorChanged事件或覆盖主窗体类中的OnBackColorChanged受保护方法来执行此操作。

答案 2 :(得分: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;
}

答案 3 :(得分:1)

尽管你现在没有使用好的方法(其他答案有更好的方法),你可以轻松修复它。由于您想要更改状态栏内控件的背景颜色,您可以在以下几个位置执行此操作:

您可以拥有一个更改接收颜色的功能,并根据该功能更改控件。在您的示例中,条形栏上的标签为红色,您已在设计器上更改它。好吧,在运行时,您可以使用代码执行相同的操作;)。标签有一个名字。只需添加如下函数:

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

您也可以在每次更改颜色的操作上执行此操作。

你可以有一个改变一切颜色的功能(比如这个,但是改变了颜色)