问题描述:在设置页面扫码的过程中,由于条码的长度不同。所以需要手动设置条码的长度,曾将考虑用comBox控件来进行设置。放弃的原因是不美观和不适用。
解决过程:由于需要进行手动设置读取的条码的长度,我们采用numricUpDown控件,这个控件既可以进行鼠标箭头的上下点击修改,也可键盘进行输入。常用来进行设置的设定浮动的数字范围。
学习:
关键属性:有 maximum(设置数据最大值,上限),minimum(设置数据的最小值,下限)
decimalPlace(设置数据栏显示小数的位数,默认的为零),Increment(设置每次增减的大小,比如点击一次加三之类)
private void Form1_Load(object sender, EventArgs e)
{
numericUpDown1.Minimum = 0; //设置允许的最小值
numericUpDown1.Maximum = 100; //设置允许的最大值
numericUpDown1.DecimalPlaces = 2; //设置小数点的位数为3位
numericUpDown1.Increment = 1; //设置步长为1
numericUpDown1.InterceptArrowKeys = true; //允许通过上下箭头调整值
}
关键事件:ValueChanged事件
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
textBox1.Text = "您输入的值为:" + numericUpDown1.Value; //值改变,触发事件。
}
numricUpDown.Text 和numricUpDown.Value 的区别:.Text的值是只要KeyUp发生以后,值就会发生改变,而.Value值得等到回车键按下或者失去焦点时才能够起作用,此时会触发ValueChanged事件。因为.Text和.Value存在着区别,所以numricUpDown控件在实时响应键盘时不能用ValueChanged事件,而需要在KeyUp事件中写类似代码
numericUpDown.Value = Convert.ToInt32(numericUpDown.Text); 下边是一段典型的KeyUp代码
private void nudMultiple_KeyUp(object sender, KeyEventArgs e)
{
if (nudMultiple.Text.Trim() == "")
nudMultiple.Text = "1";
if (Convert.ToInt32(nudMultiple.Text) > nudMultiple.Maximum)
{
txtMessage.Text = "您输入了'" + nudMultiple.Text + "',而系统允许的最大倍数为:'" + nudMultiple.Maximum + "'";
nudMultiple.Text = nudMultiple.Text.Substring(0, nudMultiple.Text.Length - 1);
nudMultiple.Select(nudMultiple.Text.Length,0);
}
nudMultiple.Value = Convert.ToInt32(nudMultiple.Text);
}