C#Winform编程控件之数字输入框控件(numericUpDown)

更新时间:2023-07-10 02:35:40 阅读: 评论:0

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);

本文发布于:2023-07-10 02:35:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1075154.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数字   控件   按住
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图