【问题标题】:C# custom control default value propertyC#自定义控件默认值属性
【发布时间】:2018-03-03 16:58:42
【问题描述】:

我有以下问题:

我已经构建了一个具有各种属性的自定义控件。为了更简单的 ui 设计,我想为我的属性添加默认值。这适用于对象,但不适用于颜色。

这是我的财产:

[Browsable(true)]
[Category("Custom Colors")]
[Description("Gets or sets the line color if not focused.")]
//[DefaultValue(typeof(Color), "61, 81, 181")]
//[DefaultValue(typeof(Color), "31, 0, 0, 0")]
public Color LineColor
{
    get { return _lineColor; }
    set { _lineColor = value; }
}

具有三个 RGB 值“61、81、181”的方法运行良好。但是如何使用四个 ARGB 值(如 "31, 0, 0, 0" )获得相同的结果?

我尝试使用十六进制字符串。这也适用于 RGB“0x3d51b5”,但不适用于 ARGB“0x1f000000”或“0x0000001f”。

【问题讨论】:

    标签: c# .net properties custom-controls


    【解决方案1】:

    您可以使用默认颜色初始化 _lineColor,然后将 LineColor 上的默认值设置为 _linecolor:

        private Color _lineColor = Color.FromArgb(50, 200, 0, 100);
    
        public Color LineColor
        {
            get { return _lineColor; }
    
            set {
    
                _lineColor = value == Color.Empty ? Color.FromArgb(50, 200, 0, 100): value;
            }
    
        }
    

    【讨论】:

    • 我有,但是如果我想在表单编辑器中重置为默认值,它会变为透明而不是我的值。
    • @TobiasWälde 我要编辑答案,你可以试试代码
    • 谢谢,它工作得很好。使用此解决方案,我还可以在运行时重置它。但我添加了一些括号以使语法更具可读性:_accentColor = (value == Color.Empty ? Color.FromArgb(61, 81, 181) : value);
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多