0

我是我的 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,小数位数 = 0,增量 = 1。

如何获得所需的功能?

4

2 回答 2

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
于 2013-10-22T19:24:45.537 回答
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关键字来隐藏您派生的类的基类中的实现。

于 2013-10-22T19:33:33.613 回答