1

我正在使用 C# windows 窗体控件库程序来创建自己的控件,代码如下:

    public partial class MyControl : UserControl
    {
        public MyControl()
        {
            InitializeComponent();
        }

        private float mMinValue;

        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Always)]
        [Category("Design") , DefaultValue(0.0)]
        public float MinValue
        {
            get { return mMinValue; }
            set { mMinValue = value; }
        }

        private float mMaxValue;

        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Always)]
        [Category("Design") , DefaultValue(1.0)]
        public float MaxValue
        {
            get { return mMaxValue; }
            set { mMaxValue = value; }
        }
    }

程序运行时,MinValue和MaxValue的默认值都是0,那么如何正确设置默认值呢?

4

3 回答 3

4

默认值属性仅指示设计者属性的默认值是什么。它不会将其设置为属性后面成员的实际值。这在 MSDN 页面上也提到了默认值属性:(
在备注部分)

注意
DefaultValueAttribute 不会导致成员使用属性值自动初始化。您必须在代码中设置初始值。

因此,正如其他人已经提到的那样,您需要自己在代码中设置这些值(我喜欢在构造函数中而不是在私有成员的声明中,但我认为这只是个人喜好问题)。

于 2016-01-19T05:54:43.263 回答
1

如果我理解正确,您可以尝试使用DefaultValueAttribute,引用:

DefaultValueAttribute 不会导致成员使用属性值自动初始化。您必须在代码中设置初始值。

要设置默认值,您应该使用构造函数。

public MyControl()
{
    MinValue = 0;
    MaxValue = 100;
    InitializeComponent();
}
于 2016-01-19T05:59:47.493 回答
-1
public partial class MyControl : UserControl
{
    //Declare your variables here
    private float mMinValue = 0.0;
    private float mMaxValue = 1.0;

    //Leave it
    public MyControl()
    {
        InitializeComponent();
    }
}
于 2016-01-19T05:52:30.743 回答