为子类化的NumericUpDown控件定义默认值

时间:2013-10-22 19:20:04

标签: vb.net numericupdown

我是NumericUpDown控件的子类,名为xNumericUpDown,它现在出现在我的IDE工具箱顶部。
我希望我的新控件设置默认值与原始控件不同 最重要的是DecimalPlaces = 2,Minimal = Decimal.MinValue,Maximal = Decimal.MaxValue和Increment = 0.

我想我应该在子类中创建正确的属性。 所以我这样试试:

 <DefaultValue(Decimal.MinValue), _
  Browsable(True)> _
Shadows Property Minimum() As Decimal
    Get
        Return MyBase.Minimum
    End Get
    Set(ByVal value As Decimal)
        MyBase.Minimum = value
    End Set
End Property

但这不起作用。 放置到我的控件时具有原始NumericUpDown的属性 最小值= 0,最大值= 100,DecimalPlaces = 0,增量= 1。

如何获得所需的功能?

2 个答案:

答案 0 :(得分:3)

DefaultValue只是设计者用来确定是否序列化数据(并在PropertyGrid中使其​​变为粗体)的属性。在您的代码中,您仍然必须自己“设置”默认值。

Public Class xNumericUpDown
  Inherits NumericUpDown

  Public Sub New()
    MyBase.DecimalPlaces = 3
  End Sub

  <DefaultValue(3)> _
  Public Shadows Property DecimalPlaces As Integer
    Get
      Return MyBase.DecimalPlaces
    End Get
    Set(value As Integer)
      MyBase.DecimalPlaces = value
    End Set
  End Property
End Class

答案 1 :(得分:2)

我不太了解Vb.Net,但这里是c#,您可以在其中创建自己的控件,为属性提供默认值。

public class MyNumericUpDown : NumericUpDown
{
    public MyNumericUpDown():base()
    {
        DecimalPlaces = 2;
        Minimum = decimal.MinValue;
        Maximum = decimal.MaxValue;
        Increment = 1;
    }
}

正如我所说,我不知道vb.Net,但我认为这是翻译......

Public Class MyNumericUpDown Inherits NumericUpDown
{
    Public Sub New()
    {
        MyBase.New()
        DecimalPlaces = 2
        Minimum = decimal.MinValue
        Maximum = decimal.MaxValue
        Increment = 1   
    }
}

如果您不需要使用具有常量默认值的NumericUpDown,那么创建自定义控件将没有价值,您只需为每个需要创建不同的对象。

    numericUpDown1 = New NumericUpDown()

    ' Set the Minimum, Maximum, and other values as needed.
    numericUpDown1.DecimalPlaces = 2
    numericUpDown1.Maximum = decimal.MaxValue
    numericUpDown1.Minimum = decimal.MinValue
    numericUpDown1.Increment = 1

您只能使用Shadow关键字隐藏您派生的类的基类中的实现。