C# NumericUpDown控件用法详解(附带实例)
C# 中的 NumericUpDown 控件可以调节数字大小,图标为:
此控件创建成功后,可以单击此控件的上按钮图标减少数值,单击此控件的下按钮图标增加数值:
上述程序的缺点是想要重新计时时,无法将定时器归零,这将是读者的习题。
【实例 2】基础数学加法运算,这个程序可以使用小数字数字段选择 NumberUpDown 的小数字数,如果小数字数是 1 则 Increment 是 0.1,如果小数字数是 2 则 Increment 是 0.01。每当有 NumberUpDown 的 Value 改变时,会自动更新加法结果。

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

C# NumericUpDown常用属性
下列是 NumericUpDown 几个常用的属性:NumericUpDown属性 | 说明 |
---|---|
DecimalPlaces | 默认是 0,表示是整数。如果想要设有小数,可以在此设定小数的位数 |
Value | NumericUpDown 控件的值,默认是使用最小值,默认是 0 |
Maximum | NumericUpDown 控件的最大值,默认是 100 |
Minimum | NumericUpDown 控件的最小值,默认是 0 |
Increment | 单击上按钮和下按钮时的差异值,默认是 1 |
ReadOnly | 设定使用者可否在此输入数值,ReadOnly 是只读,其默认是 false 表示可以手动输入数值,如果设为 true 则无法手动输入数值 |
C# NumericUpDown常用方法
- UpButton() 方法相当于单击上按钮,可以根据 Increment 增加数值;
- DownButton() 方法相当于单击下按钮,可以根据 Increment 减少数值。
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(); } } }执行结果为:
