代码之家  ›  专栏  ›  技术社区  ›  radj307

如何制作新的FlatButtonAppearance对象?

  •  0
  • radj307  · 技术社区  · 2 年前

    我遇到了一个令人沮丧的愚蠢问题 FlatButtonAppearance 对象,它显然有一个我找不到任何相关信息的构造函数。

    它似乎没有任何定义的构造函数,也没有继承任何东西——我的印象是编译器会生成一个空白构造函数 public FlatButtonAppearance() {} 然而,情况似乎并非如此。

    每当我尝试创建一个 平钮耳 使用以下任一方法创建对象:

    FlatButtonAppearance flatAppearance = new();
    
    FlatButtonAppearance flatAppearance = new()
    {
        BorderSize = 1,
        BorderColor = Color.Transparent,
        CheckedBackColor = Color.Transparent,
        MouseDownBackColor = Color.Transparent,
        MouseOverBackColor = Color.Transparent
    };
    

    它抛出了以下错误:

    error CS1729: 'FlatButtonAppearance' does not contain a constructor that takes 0 arguments
    

    很明显 有一个构造函数,但是intellisense和MSDN都不会告诉我它的签名是什么。
    甚至VisualStudio的元数据也不显示构造函数。

    我能找到的唯一有效方法是:

    FlatAppearance flatAppearance = new Button().FlatAppearance;
    

    但是 Button 也必须从某个地方得到它,然后创建一个完整的按钮控件,这样我就可以使用 FlatAppearance 财产只是肮脏的黑客行为。

    我有什么遗漏吗?

    1 回复  |  直到 2 年前
        1
  •  2
  •   rfmodulator    2 年前

    根据你的回复,你可以这样做:

    public abstract class TabHeaderButtonBase : ButtonBase
    {
        public TabHeaderButtonBase() : base()
        {
            FlatAppearance.BorderSize = 1;
            FlatAppearance.BorderColor = Color.Transparent;
            FlatAppearance.CheckedBackColor = Color.Transparent;
            FlatAppearance.MouseDownBackColor = Color.Transparent;
            FlatAppearance.MouseOverBackColor = Color.Transparent;
    
            /* You'll probably want this as well... */
            FlatStyle = FlatStyle.Flat;
        }
    }
    

    然后将此类型用作自定义按钮的基础。