none
如何判断NumericUpDown控件按的是Up或Down RRS feed

答案

  • 没有直接的事件。你可以写一个:

    1)创建一个类,继承NumericUpDown:

    namespace CSharp
    {
        public class MyNumericUpDown : NumericUpDown
        {
            /// <summary>
            /// 原来的数字
            /// </summary>
            private decimal originalNum = 0;
            /// <summary>
            /// 更改后的数字
            /// </summary>
            private decimal currentNum = 0;
            /// <summary>
            /// 当数字发生改变之时触发此事件
            /// </summary>
            public event Action<decimal, decimal> ValueChanging = null;
            /// <summary>
            /// 初始化两个数值一样
            /// </summary>
            public MyNumericUpDown()
            {
                originalNum = currentNum = Value;
            }
    
            public override void DownButton()
            {
                //保留原来的数字
                originalNum = Value;
                //更改
                base.DownButton();
                //保留后来的数字
                currentNum = Value;
                if (ValueChanging != null)
                {
                    //触发事件
                    ValueChanging(originalNum, currentNum);
                }
            }
    
            public override void UpButton()
            {
                //保留原来的数字
                originalNum = Value;
                //更改
                base.UpButton();
                //保留后来的数字
                currentNum = Value;
    
                if (ValueChanging != null)
                {
                    //触发事件
                    ValueChanging(originalNum, currentNum);
                }
            }
        }
    }

    2)处理事件并引用:

    namespace CSharp
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void myNumericUpDown1_ValueChanging(decimal arg1, decimal arg2)
            {
                if (arg1 < arg2)
                {
                    MessageBox.Show("Up!");
                }
                else
                {
                    MessageBox.Show("Down!");
                }
            }
        }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 栾涅 2012年8月19日 4:11
    2012年8月19日 3:56
    版主

全部回复

  • 没有直接的事件。你可以写一个:

    1)创建一个类,继承NumericUpDown:

    namespace CSharp
    {
        public class MyNumericUpDown : NumericUpDown
        {
            /// <summary>
            /// 原来的数字
            /// </summary>
            private decimal originalNum = 0;
            /// <summary>
            /// 更改后的数字
            /// </summary>
            private decimal currentNum = 0;
            /// <summary>
            /// 当数字发生改变之时触发此事件
            /// </summary>
            public event Action<decimal, decimal> ValueChanging = null;
            /// <summary>
            /// 初始化两个数值一样
            /// </summary>
            public MyNumericUpDown()
            {
                originalNum = currentNum = Value;
            }
    
            public override void DownButton()
            {
                //保留原来的数字
                originalNum = Value;
                //更改
                base.DownButton();
                //保留后来的数字
                currentNum = Value;
                if (ValueChanging != null)
                {
                    //触发事件
                    ValueChanging(originalNum, currentNum);
                }
            }
    
            public override void UpButton()
            {
                //保留原来的数字
                originalNum = Value;
                //更改
                base.UpButton();
                //保留后来的数字
                currentNum = Value;
    
                if (ValueChanging != null)
                {
                    //触发事件
                    ValueChanging(originalNum, currentNum);
                }
            }
        }
    }

    2)处理事件并引用:

    namespace CSharp
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void myNumericUpDown1_ValueChanging(decimal arg1, decimal arg2)
            {
                if (arg1 < arg2)
                {
                    MessageBox.Show("Up!");
                }
                else
                {
                    MessageBox.Show("Down!");
                }
            }
        }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 栾涅 2012年8月19日 4:11
    2012年8月19日 3:56
    版主
  • 谢谢您的帮助!
    2012年8月19日 4:13
  • 谢谢您的帮助!

    不用谢,欢迎再来,互帮互助!

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年8月19日 4:46
    版主