首页 > 编程笔记 > C#笔记 阅读:29

C# NumericUpDown控件用法详解(附带实例)

C# 中的 NumericUpDown 控件可以调节数字大小,图标为:


此控件创建成功后,可以单击此控件的上按钮图标减少数值,单击此控件的下按钮图标增加数值:

C# NumericUpDown常用属性

下列是 NumericUpDown 几个常用的属性:

NumericUpDown属性 说明
DecimalPlaces 默认是 0,表示是整数。如果想要设有小数,可以在此设定小数的位数
Value NumericUpDown 控件的值,默认是使用最小值,默认是 0
Maximum NumericUpDown 控件的最大值,默认是 100
Minimum NumericUpDown 控件的最小值,默认是 0
Increment 单击上按钮和下按钮时的差异值,默认是 1
ReadOnly 设定使用者可否在此输入数值,ReadOnly 是只读,其默认是 false 表示可以手动输入数值,如果设为 true 则无法手动输入数值

C# NumericUpDown常用方法

C# NumericUpDown常用事件

如果 NumericUpDown 控件的内容更改,则会产生 ValueChanged 事件。

定时器设计

【实例 1】定时器设计,当单击“开始计时”按钮,可以开始计时。如果单击“计时停止”按钮,可以结束计时同时计时结果字段会显示秒数。

namespace ch
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            numericUpDown1.UpButton();  // 更新NumericUpDown
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000;     // 每秒更新
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            timer1.Start();             // 定时器开始运作
        }

        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Stop();              // 定时器停止运作
            lblResult.Text = numericUpDown1.Value.ToString();
        }
    }
}
执行结果为:


上述程序的缺点是想要重新计时时,无法将定时器归零,这将是读者的习题。

【实例 2】基础数学加法运算,这个程序可以使用小数字数字段选择 NumberUpDown 的小数字数,如果小数字数是 1 则 Increment 是 0.1,如果小数字数是 2 则 Increment 是 0.01。每当有 NumberUpDown 的 Value 改变时,会自动更新加法结果。

namespace ch
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] decimalPlaces = { "0", "1", "2" };
            cboDecimalPlaces.Items.AddRange(decimalPlaces);   // 小数字数项目
            // 小数品项无法手动更改 DropDownList
            cboDecimalPlaces.DropDownStyle = ComboBoxStyle.DropDownList;
            cboDecimalPlaces.SelectedIndex = 0;               // 显示索引0
        }

        private void cboDecimalPlaces_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboDecimalPlaces.Text.Equals("0"))
            {
                numericUpDown1.DecimalPlaces = 0;
                numericUpDown1.Increment = 1;                 // 增减值是1
                numericUpDown2.DecimalPlaces = 0;
                numericUpDown2.Increment = 1;                 // 增减值是1
            }
            else if (cboDecimalPlaces.Text.Equals("1"))
            {
                numericUpDown1.DecimalPlaces = 1;
                numericUpDown1.Increment = 0.1M;              // 增减值是0.1
                numericUpDown2.DecimalPlaces = 1;
                numericUpDown2.Increment = 0.1M;              // 增减值是0.1
            }
            else if (cboDecimalPlaces.Text.Equals("2"))
            {
                numericUpDown1.DecimalPlaces = 2;
                numericUpDown1.Increment = 0.01M;             // 增减值是0.01
                numericUpDown2.DecimalPlaces = 2;
                numericUpDown2.Increment = 0.01M;             // 增减值是0.01
            }
        }

        private void numericUpDown2_ValueChanged(object sender, EventArgs e)
        {
            UpdateResult();                                   // 更新结果值
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            UpdateResult();                                   // 更新结果值
        }

        private void UpdateResult()
        {
            var total = numericUpDown1.Value + numericUpDown2.Value;
            lblResult.Text = total.ToString();
        }
    }
}
执行结果为:

相关文章