将按钮恢复为默认颜色

时间:2018-11-02 14:46:57

标签: c# winforms button

我正在自定义按钮颜色等,我希望能够将表单重置为默认颜色。我知道该怎么办,因为我在谷歌搜索时找到了答案,但是UseVisualStyleBackColor不起作用?!?!我遍历按钮,Visual Studio在命令下划线。

this.BackColor = Control.DefaultBackColor;
foreach (Control c in this.Controls)
{
  if (c.GetType() == typeof(Button))
  {
    c.UseVisualStyleBackColor = true;
    c.BackColor = Control.DefaultBackColor;
  }
}

收到的错误是

  

CS1061“控件”不包含“ UseVisualStyleBackColor”的定义,也找不到找不到接受“控件”类型的第一个参数的扩展方法“ UseVisualStyleBackColor”(您是否缺少using指令或程序集引用?)

如果我尝试直接访问按钮,是否会遇到相同的错误?

4 个答案:

答案 0 :(得分:2)

this.BackColor = Control.DefaultBackColor;
foreach (Control c in this.Controls)
{
  if (c is Button)
  {
     var button = (Button)c;
     button.UseVisualStyleBackColor = true;
     button.BackColor = Control.DefaultBackColor;
  }
}

答案 1 :(得分:2)

我建议使用 Linq import pandas as pd xls = pd.ExcelFile('myexcel.xls') out_df = pd.DataFrame() for sheet in xls.sheet_names: df = pd.read_excel('myexcel.xls', sheet_name=sheet) out_df.append(df) ## This will append rows of one dataframe to another(just like your expected output) print(out_df) ## out_df will have data from all the sheets )来过滤按钮:

.OfType<Button>()

答案 2 :(得分:1)

对于任何版本的C#,您都可以使用类型转换:

((Button)c).UseVisualStyleBackColor = true;

从C#7开始,您可以使用Pattern Matching(尝试将其强制转换+成功后,将结果分配给新变量):

if (c is Button b))
{
    b.UseVisualStyleBackColor = true;
    b.BackColor = Control.DefaultBackColor;
}

答案 3 :(得分:0)

按代码顺序的轻微问题需要它才能起作用。必须重新排列颜色和视觉样式的设置。...

            this.BackColor = Control.DefaultBackColor;
        foreach (Control c in this.Controls)
        {
            if (c is Button b)
            {
                b.BackColor = Control.DefaultBackColor;
                b.UseVisualStyleBackColor = true;
            }
        }