this.numericUpDown1.Value根据这个不是可以判断?
步长是多少就加或减
你不就知道它的起始位置了!

解决方案 »

  1.   

    我已经解决了
    using System;
    //using System.ComponentModel;
    using System.Windows.Forms;
    namespace ClassLibrary1
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>

    //设计一个上下改造数字自动调整的控件,根据在哪一位,调整该位的数字
    public class TTextBoxEx:System.Windows.Forms.NumericUpDown
    {
    private bool FIsBitAdjust;
    //数字编辑框
    public TextBox EditControl
    {
    get
    {
    return ((TextBox)(this.Controls[1]));
    }
    }
    //按光标位置调整数字
    public  bool IsBitAdjust
    {
    get
    {
    return FIsBitAdjust;
    }
    set 
    {
    FIsBitAdjust=value;
    }
    }
    private void AdjustNum(bool IsAdd)
    {
    int li_bit,li_bit1,li_len,li_PointBit; if(ReadOnly) return; li_bit1=EditControl.SelectionStart;
    li_len=Text.Length; if(CanFocus)
    Focus();
    if(EditControl.SelectionLength>0)
    {
    li_bit=li_bit1;
    EditControl.SelectionLength=1;
    }
    else
    {
    li_bit=li_bit1;
    if(li_bit==li_len) li_bit--; EditControl.SelectionStart=li_bit;
    li_bit1=li_bit;
    EditControl.SelectionLength=1;
    }

    li_PointBit=Text.IndexOf('.');
    if(li_PointBit==-1) li_PointBit=li_len; if(li_PointBit<li_bit)
    li_bit=li_PointBit-li_bit;
    else if(li_PointBit>li_bit)
    li_bit=li_PointBit-li_bit-1;
    else
    return;
    if(IsAdd) 
    {
    Value=Value+System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString()));
    if(Value>this.Maximum)
    Value=this.Minimum;
    }
    else
    {
    Value=Value-System.Decimal.Parse((System.Math.Pow(10,li_bit).ToString()));
    if(Value<this.Minimum)
    Value=this.Maximum;
    } if(li_len<Text.Length)
    EditControl.SelectionStart=li_bit1+1;
    else if(li_len>Text.Length)
    EditControl.SelectionStart=li_bit1-1;
    else
    EditControl.SelectionStart=li_bit1;
    EditControl.SelectionLength=1;
    Refresh();
    } //重载上调及下调
    public override void DownButton()
    { if(FIsBitAdjust) 
    {
    AdjustNum(false);

    }
    else
    {
    //继承
    base.DownButton();
    }
    }
    //重载上调及下调
    public override void UpButton()
    {
    if(FIsBitAdjust) 
    {
    AdjustNum(true);

    }
    else
    {
    //继承
    base.DownButton();
    }
    }
    }}