C#Winform编程控件之数字输⼊框控件(numericUpDown)
数字输⼊框控件是⽤于输⼊数字和调节数字的⼀个控件,该控件中的数字储存为decimal类型,但是数字必须是整数⽽不能是⼩数。
控件在⼯具箱中的样式如下:
控件拖拽到窗⼝后的样式如下:
常⽤属性:
Value属性:控制数字输⼊框的数字的值(可⽤控件的向上或者向下符号对数字进⾏调节也可以⾃⼰输⼊)。
Maxmum属性:控制数字输⼊框的最⼤值(当输⼊的值⼤于最⼤值或者调节到⼤于最⼤值数字输⼊框则显⽰的是最⼤值,超过最⼤值也只显⽰最⼤值)。
Minimum属性:控制数字输⼊框的最⼩值(可以为负数)。
Increment属性:控制点击⼀次向上或者向下⼩按钮数字输⼊框值的增减⼤⼩。
UpDownAlign属性:控制数字调节⼩按钮是在控件的左边还是右边,有两个值:Left和Right。
对应的属性如下:
实现按住不放和按住拖拽增减数值的功能:
代码如下:(可⾃⾏提取⾥⾯有⽤的部分)
需要⽤到的参数定义如下:
1bool isMouDown_PosX = fal; //⿏标是否按下
2float posX_X = 0;
3float posX_Y = 0;
4float posX_lastValue = 0;
相关的事件响应函数如下:
生活中的比1//键盘按下时调⽤
2private void numericUpDown_posX_KeyDown(object nder, KeyEventArgs e)
3 {
4if (e.KeyCode == Keys.Enter) //回车键
亦声
5 {
6 ChangeWorldCoordinate();
7 }
8 }
9
10//⿏标按下时调⽤
11private void numericUpDown_posX_MouDown(object nder, MouEventArgs e) 12 {
13if (e.X > numericUpDown_posX.Size.Width - 15)
14 {
15if (e.Button == MouButtons.Right) //⿏标右键
16 {
17 ChangeWorldCoordinate(true);
托福词汇18return;
19 }
20
21if (e.Button == MouButtons.Left) //⿏标左键
22 {
23if (ModifierKeys == Keys.Shift) //按住Shift键时,点击⿏标左键
个人自学24 {
25 MessageBox.Show("Mou And Key!");
26 }
27 isMouDown_PosX = true;
28 posX_X = e.X;
29 posX_Y = e.Y;
30 ChangeWorldCoordinate();
31 }
32 }
33 }
34
35//⿏标抬起时调⽤
36private void numericUpDown_posX_MouUp(object nder, MouEventArgs e)
37 {
38 isMouDown_PosX = fal;
39 }
40
41//⿏标按下移动时调⽤
42private void numericUpDown_posX_MouMove(object nder, MouEventArgs e) 43 {
44if (isMouDown_PosX)
45 {
46float deltaX = e.X - posX_X;
47float deltaY = posX_Y - e.Y;
48float delta = 0;
49if (deltaX==0 && deltaY==0)
创意手工画
50 {
51return;
52 }
53
54//右、上⽅向
55if (deltaX>0 || deltaY>0)
56 {
57 delta = (deltaX >= deltaY) ? deltaX : deltaY;
58if (delta > 0.5)
59 {
60 delta = 0.5f;
61 }
62 }
63//左、下⽅向
64if (deltaX<0 || deltaY<0)
65 {
66 delta = (deltaX <= deltaY) ? deltaX : deltaY;
67if (delta < -0.5)
68 {
69 delta = -0.5f;
70 }
71 }
72
73 numericUpDown_posX.Value += (decimal)delta;
74 posX_X = e.X;无线鼠标怎么充电
75 posX_Y = e.Y;
76 ChangeWorldCoordinate();
77 }
78 }
79
80//数值发⽣改变时调⽤
肚条汤81private void numericUpDown_posX_ValueChanged(object nder, EventArgs e)
82 {
83if (Math.Abs(numericUpDown_posX.Value - (decimal)posX_lastValue) != numericUpDown_posX.Increment)
84 {
85return;
ppt2010
86 }
87if (isMouDown_PosX)
88 {
89 posX_lastValue = (float)numericUpDown_posX.Value;
90 ChangeWorldCoordinate();
91 }
92 }
实现按住拖拽功能思路如下:
1:设置⼀个标记位,在⿏标按下时设为true;
2:在⿏标按下并移动时,判断标记位的状态,如果为true,则根据⿏标前后位置的增量,增减数值;
3:在⿏标抬起时,将标记位设置为fal,不再进⾏移动时的事件响应;
这个控件没有“ private void numericUpDown_posX_MouMove(object nder, MouEventArgs e)”这个时间,需要⼿动进⾏绑定,绑定⽅式如下:
this.numericUpDown_posX.MouMove += new System.Windows.Forms.MouEventHandler(this.numericUpDown_posX_MouMove);