C# 将颜色更改为状态栏

C# 将颜色更改为状态栏,c#,winforms,controls,C#,Winforms,Controls,好的,我还在学习这个。。。 我在谷歌上搜索并做了一些研究,但没有找到我要找的东西。 我正在尝试添加一个状态栏,它在背景中显示当前颜色。无论用户如何更改背景颜色(上下文菜单、菜单栏、按钮),此选项都应更新 我已经添加了状态栏,但我不太确定当您单击带有颜色的按钮或使用上下文菜单时如何显示状态栏。因此,我必须输入这些代码中的每一个来更改或创建一个带有状态栏的公共类 你可以在下面找到我打算做的事情: 如果你看底部,它会显示红色背景,同时也会高亮显示为红色。当我点击蓝色或绿色,我需要它也改变。 实现这一

好的,我还在学习这个。。。 我在谷歌上搜索并做了一些研究,但没有找到我要找的东西。 我正在尝试添加一个状态栏,它在背景中显示当前颜色。无论用户如何更改背景颜色(上下文菜单、菜单栏、按钮),此选项都应更新

我已经添加了状态栏,但我不太确定当您单击带有颜色的按钮或使用上下文菜单时如何显示状态栏。因此,我必须输入这些代码中的每一个来更改或创建一个带有状态栏的公共类

你可以在下面找到我打算做的事情:

如果你看底部,它会显示红色背景,同时也会高亮显示为红色。当我点击蓝色或绿色,我需要它也改变。 实现这一目标的最佳方式是什么

这是我在工具条中的代码:

 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;
    }
我现在正试图找出状态栏


编辑我知道我必须做什么。我需要返回表单页面并编辑toolstrip。感谢大家的帮助。

最好的解决方案是对主窗体的背景颜色变化做出反应。您可以通过处理BackColorChanged事件或重写主窗体类中的OnBackColorChanged受保护方法来实现这一点。

最好的解决方案是对主窗体的背景颜色更改做出反应。您可以通过处理BackColorChanged事件或重写主窗体类中的OnBackColorChanged保护方法来完成此操作。

使所有按钮使用相同的事件。然后检查发送者。如果将绿色按钮、蓝色按钮等标记指定给按钮,则可以使用:

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
}

使所有按钮使用相同的事件。然后检查发送者。如果将绿色按钮、蓝色按钮等标记指定给按钮,则可以使用:

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
}

您可以使用一种方法来更改颜色,并在此方法中设置状态栏的文本和/或颜色

因此,不要设置(例如)

你会打电话的

this.SetColor(System.Drawing.Color.Blue);
SetColor(Color)
中,处理文本更改

例如,您可以使用以下方法:

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

您可以使用一种方法来更改颜色,并在此方法中设置状态栏的文本和/或颜色

因此,不要设置(例如)

你会打电话的

this.SetColor(System.Drawing.Color.Blue);
SetColor(Color)
中,处理文本更改

例如,您可以使用以下方法:

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

虽然你现在没有使用好的方法(其他答案有更好的方法),但是你可以很容易地修复它。由于要更改状态栏中控件的背景色,可以在多个位置执行此操作:

您可以使用一个函数来更改接收到的颜色,并根据该颜色更改控件。在您的示例中,条形图上的标签为红色,并且您已经在designer上对其进行了更改。嗯,在运行时,您可以使用code;)执行相同的操作。标签上有一个名称。只需添加如下函数:

private void ChangeColor(mycolor as System.Drawing.Color)
{
    yourlabelcontrol.BackColor = mycolor;
    yourlabelcontrol.Text = mycolor.Name;
}
您还可以对每个更改颜色的操作执行此操作


你可以使用一个函数来改变所有东西的颜色(就像这个函数,但是改变所有东西的颜色)

尽管你现在没有使用好的方法(其他答案有更好的方法),但是你可以很容易地修复它。由于要更改状态栏中控件的背景色,可以在多个位置执行此操作:

您可以使用一个函数来更改接收到的颜色,并根据该颜色更改控件。在您的示例中,条形图上的标签为红色,并且您已经在designer上对其进行了更改。嗯,在运行时,您可以使用code;)执行相同的操作。标签上有一个名称。只需添加如下函数:

private void ChangeColor(mycolor as System.Drawing.Color)
{
    yourlabelcontrol.BackColor = mycolor;
    yourlabelcontrol.Text = mycolor.Name;
}
您还可以对每个更改颜色的操作执行此操作


您可以使用一个功能来更改所有颜色(如此功能,但更改所有颜色)

按钮位于顶部,并且已经有了这些颜色。那么我需要制作一个新的私人无效事件吗?我已经编辑了我的答案。再读一遍。将该代码添加到表单中,然后选择每个按钮并使用该事件。另外,在按钮的名称中添加“绿色按钮、蓝色按钮”等。我不会对此投反对票,但如果你必须使用20种颜色,这个解决方案是不好的。。此外,名称在某种程度上应该是不相关的。。可能使用控件的tag属性?或者更好,只需选择它的背景色;)@格比安奇:哦,是的。那好多了。我已经有一年没有使用Windows窗体了,所以我不记得了。编辑代码。在这种情况下,避免使用名称的一个解决方案是使用按钮的背景色。通过这种方式,您可以确定它们将匹配:-)按钮位于顶部,并且已经有了这些颜色。那么我需要制作一个新的私人无效事件吗?我已经编辑了我的答案。再读一遍。将该代码添加到表单中,然后选择每个按钮并使用该事件。另外,在按钮的名称中添加“绿色按钮、蓝色按钮”等。我不会对此投反对票,但如果你必须使用20种颜色,这个解决方案是不好的。。此外,名称在某种程度上应该是不相关的。。可能使用控件的tag属性?或者更好,只需选择它的背景色;)@格比安奇:哦,是的。那好多了。我已经有一年没有使用Windows窗体了,所以我不记得了。编辑代码。在这种情况下,避免使用名称的一个解决方案是使用按钮的背景色。这样,您就可以确定它们将匹配:-)