- 浏览: 195339 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
输入法:
学习了
在PHP里,如何求得当前日期的前一天 -
l16426434:
答案我是这么想的
A说不知道 可以肯定这个数字出现2次以上
B ...
逻辑推理 -
l16426434:
第一个是方块8吗?
第二题我做过的
逻辑推理 -
888wu:
你好,这个好象不全,我想看一下源码,不知道你有没有,麻烦给我传 ...
自己编写基于MVC的轻量级PHP框架 -
lel08090:
<?php$name="w3pop.com&q ...
php之heredoc语法
C#中只接受数字输入的控件
关键字: numeric textbox在MFC里需要获取文本输入时,经常会用到CEdit或者它的子类。可以通过设置它的Edit Control Styles来控制Edit控件的一些行为,例如说设置ES_NUMBER标识使控件只允许接受数字(虽然可以复制-粘贴非数字字符串到这个控件中)。
在.NET中,用于获取文本输入的控件是TextBox,但TextBox本身并不包含可以直接调用的方法或属性来将其设置为只接受数字输入。这个问题有好几种方法来解决:
下面对这几种解决方法的其中一些稍微讨论一下。
=========================================================================================
一、继承TextBox并覆盖其CreateParams属性
使用这种方法的NumericTextBox的实现(代码的第1-12行)及用例:
运行程序,在输入任意非0-9的字符时的样子:
(截图反映的是在我的简体中文Windows XP上的运行效果;若系统语言不是简体中文的话会根据系统语言而不同)
如果这个文本框已经能满足需求,就没必要自己监听KeyDown事件那么麻烦了。
=========================================================================================
二、自行监听KeyDown事件
可以参考CodeProject上Numeric TextBox : Allow your users to enter numeric data the easy way的实现方式。基本原理就是在KeyDown的响应方法中对e.KeyCode进行判断,如果输入不满足条件则设置某个标识,然后再KeyPress的响应方法里设置e.Handled =true;来取消该次事件。
最简单来说类似这样:
(判断逻辑来自KeyEventArgs在MSDN文档上的范例代码)
得到的文本框外观与一般的TextBox没区别,只是无法由键盘输入数字字符以外的字符。要避免任意字符串被复制-粘贴进来的话,要另外做些判断。这里就不详细写了。
=========================================================================================
三、使用MaskedTextBox
使用例子:
这段代码是手写的;要是用VS2005/VS2008的设计器的话,这个例子的所有功能都能直接在设计器里指定。
输入内容(可以看到分隔符都不需要自己写了,已经写好在输入框里;只要填空就行):
输入内容不符合Mask属性指定的模式时:
=========================================================================================
四、使用NumericUpDown
这段代码是手写的;要是用VS2005/VS2008的设计器的话,这个例子的所有功能都能直接在设计器里指定。
NumericUpDown的内容的值可以用Value属性来设置或获取,类型为decimal。
截图:(输入不符合要求的字符时,默认行为是beep一下,没有工具条的提示)
在.NET中,用于获取文本输入的控件是TextBox,但TextBox本身并不包含可以直接调用的方法或属性来将其设置为只接受数字输入。这个问题有好几种方法来解决:
- 继承TextBox并覆盖其CreateParams属性,对该属性的Style成员添加ES_NUMBER标识; 这个方法与MFC中用Edit Control Styles来初始化CEdit一样。可以说是最偷懒的方法。
- 自行监听TextBox的KeyDown事件,实现输入验证(但不保证复制-粘贴输入的正确性); 其实设置ES_NUMBER做的也是这件事,如果要实现的功能与Windows控件中默认的一样的话没必要自己监听KeyDown事件;如果需要些额外的功能,例如说允许输入负数、十六进制数等默认没有的功能时,则监听KeyDown事件是个有效的方式。
- 使用第三方编写的继承自TextBox的控件; 这是拥有“不重复发明轮子”精神的人们的做法。既然获取数字输入应该是个常见问题,之前也肯定有人解决过,那么利用别人的解决方案就行。
- 使用MaskedTextBox控件; 这是.NET Framework自带的一个TextBox的子类,实现了一个带过滤功能的TextBox,可以自定义接受的输入内容的格式。只要设置其stringMask属性即可。如果觉得ES_NUMBER的功能不够用,而自行监听KeyDown事件来做验证不够优雅的话,这个MaskedTextBox绝对是值得考虑的选择。例如说,要接受0到999999的数字,只要把Mask属性设为"999,999.00"就行(意味着六位的可选十进制数字,一个小数点,和两位必须输入的小数)。MSDN上对这个控件有个简单的walkthrough。
- 使用NumericUpDown控件。 当需要获取简单数字输入时,在.NET世界中最直接的方法不是去想办法与TextBox搏斗,而应该换个控件来用——NumericUpDown。这个控件不但能接受来自键盘的数字输入,还有一组上下箭头来步进。它包含了许多可以设置的属性,例如显示分隔符逗号的boolThousandsSeparator、控制最小/最大值的decimalMinimum/decimalMaximum属性等。
光是CodeProject上就有好几个与这个相关的实现:
Validating Edit Controls。包括了NumericTextBox、AlphanumericTextBox、DateTextBox等许多版本的TextBox子类。值得一看。
A numeric textbox with a twist。
Numeric TextBox : Allow your users to enter numeric data the easy way。
下面对这几种解决方法的其中一些稍微讨论一下。
=========================================================================================
一、继承TextBox并覆盖其CreateParams属性
使用这种方法的NumericTextBox的实现(代码的第1-12行)及用例:
C#代码<embed type="application/x-shockwave-flash" width="14" height="15" src="http://rednaxelafx.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=public%20class%20NumericTextBox%20%3A%20System.Windows.Forms.TextBox%0A%7B%0A%20%20%20%20private%20const%20int%20ES_NUMBER%20%3D%200x2000%3B%20%2F%2F%20(%20defined%20in%20WinUser.h%20)%0A%20%20%20%20%0A%20%20%20%20protected%20override%20System.Windows.Forms.CreateParams%20CreateParams%20%7B%0A%20%20%20%20%20%20%20%20get%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20System.Windows.Forms.CreateParams%20cp%20%3D%20base.CreateParams%3B%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20cp.Style%20%7C%3D%20ES_NUMBER%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20cp%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%0A%23region%20use%20case%20code%20sample%0A%0Asealed%20class%20TestForm%20%3A%20System.Windows.Forms.Form%0A%7B%0A%20%20%20%20private%20NumericTextBox%20m_ntxt%3B%0A%20%20%20%20%0A%20%20%20%20public%20TestForm()%20%7B%0A%20%20%20%20%20%20%20%20InitializeComponent()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20InitializeComponent()%20%7B%0A%20%20%20%20%20%20%20%20this.m_ntxt%20%3D%20new%20NumericTextBox()%3B%0A%20%20%20%20%20%20%20%20this.m_ntxt.Dock%20%3D%20System.Windows.Forms.DockStyle.Fill%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20this.ClientSize%20%3D%20new%20System.Drawing.Size(100%2C%2060)%3B%0A%20%20%20%20%20%20%20%20this.Controls.Add(this.m_ntxt)%3B%0A%20%20%20%20%20%20%20%20this.PerformLayout()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%5BSystem.STAThread%5D%0A%20%20%20%20static%20void%20Main(string%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20System.Windows.Forms.Application.EnableVisualStyles()%3B%0A%20%20%20%20%20%20%20%20System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false)%3B%0A%20%20%20%20%20%20%20%20System.Windows.Forms.Application.Run(new%20TestForm())%3B%0A%20%20%20%20%7D%0A%7D%0A%0A%23endregion"></embed>
- publicclassNumericTextBox:System.Windows.Forms.TextBox
- {
- privateconstintES_NUMBER=0x2000;//(definedinWinUser.h)
- protectedoverrideSystem.Windows.Forms.CreateParamsCreateParams{
- get{
- System.Windows.Forms.CreateParamscp=base.CreateParams;
- cp.Style|=ES_NUMBER;
- returncp;
- }
- }
- }
- #regionusecasecodesample
- sealedclassTestForm:System.Windows.Forms.Form
- {
- privateNumericTextBoxm_ntxt;
- publicTestForm(){
- InitializeComponent();
- }
- privatevoidInitializeComponent(){
- this.m_ntxt=newNumericTextBox();
- this.m_ntxt.Dock=System.Windows.Forms.DockStyle.Fill;
- this.ClientSize=newSystem.Drawing.Size(100,60);
- this.Controls.Add(this.m_ntxt);
- this.PerformLayout();
- }
- [System.STAThread]
- staticvoidMain(string[]args){
- System.Windows.Forms.Application.EnableVisualStyles();
- System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
- System.Windows.Forms.Application.Run(newTestForm());
- }
- }
- #endregion
运行程序,在输入任意非0-9的字符时的样子:
(截图反映的是在我的简体中文Windows XP上的运行效果;若系统语言不是简体中文的话会根据系统语言而不同)
如果这个文本框已经能满足需求,就没必要自己监听KeyDown事件那么麻烦了。
=========================================================================================
二、自行监听KeyDown事件
可以参考CodeProject上Numeric TextBox : Allow your users to enter numeric data the easy way的实现方式。基本原理就是在KeyDown的响应方法中对e.KeyCode进行判断,如果输入不满足条件则设置某个标识,然后再KeyPress的响应方法里设置e.Handled =true;来取消该次事件。
最简单来说类似这样:
C#代码<embed type="application/x-shockwave-flash" width="14" height="15" src="http://rednaxelafx.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=using%20System%3B%0Ausing%20System.Drawing%3B%0Ausing%20System.Windows.Forms%3B%0A%0Asealed%20class%20TestForm%20%3A%20Form%0A%7B%0A%20%20%20%20private%20TextBox%20m_textBox%3B%0A%20%20%20%20private%20bool%20m_nonNumberEntered%20%3D%20false%3B%0A%20%20%20%20%0A%20%20%20%20public%20TestForm()%20%7B%0A%20%20%20%20%20%20%20%20InitializeComponent()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20InitializeComponent()%20%7B%0A%20%20%20%20%20%20%20%20this.m_textBox%20%3D%20new%20TextBox()%3B%0A%20%20%20%20%20%20%20%20this.m_textBox.Dock%20%3D%20DockStyle.Fill%3B%0A%20%20%20%20%20%20%20%20this.m_textBox.KeyDown%20%2B%3D%20m_textBox_KeyDown%3B%0A%20%20%20%20%20%20%20%20this.m_textBox.KeyPress%20%2B%3D%20m_textBox_KeyPress%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20this.ClientSize%20%3D%20new%20Size(100%2C%2060)%3B%0A%20%20%20%20%20%20%20%20this.Controls.Add(this.m_textBox)%3B%0A%20%20%20%20%20%20%20%20this.PerformLayout()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20m_textBox_KeyDown(object%20sender%2C%20KeyEventArgs%20e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Initialize%20the%20flag%20to%20false.%0A%20%20%20%20%20%20%20%20m_nonNumberEntered%20%3D%20false%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%2F%2F%20Determine%20whether%20the%20keystroke%20is%20a%20number%20from%20the%20top%20of%20the%20keyboard.%0A%20%20%20%20%20%20%20%20if%20(e.KeyCode%20%3C%20Keys.D0%20%7C%7C%20e.KeyCode%20%3E%20Keys.D9)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Determine%20whether%20the%20keystroke%20is%20a%20number%20from%20the%20keypad.%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(e.KeyCode%20%3C%20Keys.NumPad0%20%7C%7C%20e.KeyCode%20%3E%20Keys.NumPad9)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Determine%20whether%20the%20keystroke%20is%20a%20backspace.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(e.KeyCode%20!%3D%20Keys.Back)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20A%20non-numerical%20keystroke%20was%20pressed.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20the%20flag%20to%20true%20and%20evaluate%20in%20KeyPress%20event.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20m_nonNumberEntered%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20m_textBox_KeyPress(object%20sender%2C%20KeyPressEventArgs%20e)%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Check%20for%20the%20flag%20being%20set%20in%20the%20KeyDown%20event.%0A%20%20%20%20%20%20%20%20if%20(m_nonNumberEntered)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Stop%20the%20character%20from%20being%20entered%20into%20the%20control%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20since%20it%20is%20non-numerical.%0A%20%20%20%20%20%20%20%20%20%20%20%20e.Handled%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%5BSTAThread%5D%0A%20%20%20%20static%20void%20Main(string%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20Application.EnableVisualStyles()%3B%0A%20%20%20%20%20%20%20%20Application.SetCompatibleTextRenderingDefault(false)%3B%0A%20%20%20%20%20%20%20%20Application.Run(new%20TestForm())%3B%0A%20%20%20%20%7D%0A%7D"></embed>
- usingSystem;
- usingSystem.Drawing;
- usingSystem.Windows.Forms;
- sealedclassTestForm:Form
- {
- privateTextBoxm_textBox;
- privateboolm_nonNumberEntered=false;
- publicTestForm(){
- InitializeComponent();
- }
- privatevoidInitializeComponent(){
- this.m_textBox=newTextBox();
- this.m_textBox.Dock=DockStyle.Fill;
- this.m_textBox.KeyDown+=m_textBox_KeyDown;
- this.m_textBox.KeyPress+=m_textBox_KeyPress;
- this.ClientSize=newSize(100,60);
- this.Controls.Add(this.m_textBox);
- this.PerformLayout();
- }
- privatevoidm_textBox_KeyDown(objectsender,KeyEventArgse){
- //Initializetheflagtofalse.
- m_nonNumberEntered=false;
- //Determinewhetherthekeystrokeisanumberfromthetopofthekeyboard.
- if(e.KeyCode<Keys.D0||e.KeyCode>Keys.D9){
- //Determinewhetherthekeystrokeisanumberfromthekeypad.
- if(e.KeyCode<Keys.NumPad0||e.KeyCode>Keys.NumPad9){
- //Determinewhetherthekeystrokeisabackspace.
- if(e.KeyCode!=Keys.Back){
- //Anon-numericalkeystrokewaspressed.
- //SettheflagtotrueandevaluateinKeyPressevent.
- m_nonNumberEntered=true;
- }
- }
- }
- }
- privatevoidm_textBox_KeyPress(objectsender,KeyPressEventArgse){
- //CheckfortheflagbeingsetintheKeyDownevent.
- if(m_nonNumberEntered){
- //Stopthecharacterfrombeingenteredintothecontrol
- //sinceitisnon-numerical.
- e.Handled=true;
- }
- }
- [STAThread]
- staticvoidMain(string[]args){
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(newTestForm());
- }
- }
(判断逻辑来自KeyEventArgs在MSDN文档上的范例代码)
得到的文本框外观与一般的TextBox没区别,只是无法由键盘输入数字字符以外的字符。要避免任意字符串被复制-粘贴进来的话,要另外做些判断。这里就不详细写了。
=========================================================================================
三、使用MaskedTextBox
使用例子:
C#代码<embed type="application/x-shockwave-flash" width="14" height="15" src="http://rednaxelafx.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=using%20System%3B%0Ausing%20System.Windows.Forms%3B%0A%0Asealed%20class%20TestForm%20%3A%20Form%0A%7B%0A%20%20%20%20private%20MaskedTextBox%20m_maskedTextBox%3B%0A%20%20%20%20private%20ToolTip%20m_toolTip%3B%0A%20%20%20%20%0A%20%20%20%20public%20TestForm()%20%7B%0A%20%20%20%20%20%20%20%20InitializeComponent()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20InitializeComponent()%20%7B%0A%20%20%20%20%20%20%20%20this.m_maskedTextBox%20%3D%20new%20MaskedTextBox()%3B%0A%20%20%20%20%20%20%20%20this.m_maskedTextBox.Mask%20%3D%20%22999%2C999.00%22%3B%0A%20%20%20%20%20%20%20%20this.m_maskedTextBox.Dock%20%3D%20DockStyle.Fill%3B%0A%20%20%20%20%20%20%20%20this.m_maskedTextBox.MaskInputRejected%20%2B%3D%20m_maskedTextBox_InputRejected%3B%0A%20%20%20%20%20%20%20%20this.m_maskedTextBox.KeyDown%20%2B%3D%20m_maskedTextBox_KeyDown%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20this.m_toolTip%20%3D%20new%20ToolTip()%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20this.ClientSize%20%3D%20new%20Size(100%2C%2060)%3B%0A%20%20%20%20%20%20%20%20this.Controls.Add(this.m_maskedTextBox)%3B%0A%20%20%20%20%20%20%20%20this.PerformLayout()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20m_maskedTextBox_InputRejected(object%20sender%2C%0A%20%20%20%20%20%20%20%20MaskInputRejectedEventArgs%20e)%20%7B%0A%20%20%20%20%20%20%20%20toolTip.ToolTipTitle%20%3D%20%22Invalid%20Input%22%3B%0A%20%20%20%20%20%20%20%20toolTip.Show(%22Only%20digits%20(0-9)%20are%20allowed.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20m_maskedTextBox%2C%20m_maskedTextBox.Location%2C%205000)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20m_maskedTextBox_KeyDown(object%20sender%2C%20KeyEventArgs%20e)%20%7B%0A%20%20%20%20%20%20%20%20m_toolTip.Hide(maskedTextBox)%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%5BSTAThread%5D%0A%20%20%20%20static%20void%20Main(string%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20Application.EnableVisualStyles()%3B%0A%20%20%20%20%20%20%20%20Application.SetCompatibleTextRenderingDefault(false)%3B%0A%20%20%20%20%20%20%20%20Application.Run(new%20TestForm())%3B%0A%20%20%20%20%7D%0A%7D"></embed>
- usingSystem;
- usingSystem.Windows.Forms;
- sealedclassTestForm:Form
- {
- privateMaskedTextBoxm_maskedTextBox;
- privateToolTipm_toolTip;
- publicTestForm(){
- InitializeComponent();
- }
- privatevoidInitializeComponent(){
- this.m_maskedTextBox=newMaskedTextBox();
- this.m_maskedTextBox.Mask="999,999.00";
- this.m_maskedTextBox.Dock=DockStyle.Fill;
- this.m_maskedTextBox.MaskInputRejected+=m_maskedTextBox_InputRejected;
- this.m_maskedTextBox.KeyDown+=m_maskedTextBox_KeyDown;
- this.m_toolTip=newToolTip();
- this.ClientSize=newSize(100,60);
- this.Controls.Add(this.m_maskedTextBox);
- this.PerformLayout();
- }
- privatevoidm_maskedTextBox_InputRejected(objectsender,
- MaskInputRejectedEventArgse){
- toolTip.ToolTipTitle="InvalidInput";
- toolTip.Show("Onlydigits(0-9)areallowed.",
- m_maskedTextBox,m_maskedTextBox.Location,5000);
- }
- privatevoidm_maskedTextBox_KeyDown(objectsender,KeyEventArgse){
- m_toolTip.Hide(maskedTextBox);
- }
- [STAThread]
- staticvoidMain(string[]args){
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(newTestForm());
- }
- }
这段代码是手写的;要是用VS2005/VS2008的设计器的话,这个例子的所有功能都能直接在设计器里指定。
输入内容(可以看到分隔符都不需要自己写了,已经写好在输入框里;只要填空就行):
输入内容不符合Mask属性指定的模式时:
=========================================================================================
四、使用NumericUpDown
C#代码<embed type="application/x-shockwave-flash" width="14" height="15" src="http://rednaxelafx.iteye.com/javascripts/syntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" allowscriptaccess="always" quality="high" flashvars="clipboard=using%20System%3B%0Ausing%20System.Drawing%3B%0Ausing%20System.Windows.Forms%3B%0A%0Asealed%20class%20TestForm%20%3A%20Form%0A%7B%0A%20%20%20%20private%20NumericUpDown%20m_numericUpDown%3B%0A%20%20%20%20%0A%20%20%20%20public%20TestForm()%20%7B%0A%20%20%20%20%20%20%20%20InitializeComponent()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20private%20void%20InitializeComponent()%20%7B%0A%20%20%20%20%20%20%20%20this.m_numericUpDown%20%3D%20new%20NumericUpDown()%3B%0A%20%20%20%20%20%20%20%20this.m_numericUpDown.Value%20%3D%20100%3B%0A%20%20%20%20%20%20%20%20this.m_numericUpDown.Dock%20%3D%20DockStyle.Fill%3B%0A%20%20%20%20%20%20%20%20this.m_numericUpDown.ThousandsSeparator%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20this.m_numericUpDown.Maximum%20%3D%20int.MaxValue%3B%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20this.ClientSize%20%3D%20new%20Size(100%2C%2060)%3B%0A%20%20%20%20%20%20%20%20this.Controls.Add(this.m_numericUpDown)%3B%0A%20%20%20%20%20%20%20%20this.PerformLayout()%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%5BSystem.STAThread%5D%0A%20%20%20%20static%20void%20Main(string%5B%5D%20args)%20%7B%0A%20%20%20%20%20%20%20%20Application.EnableVisualStyles()%3B%0A%20%20%20%20%20%20%20%20Application.SetCompatibleTextRenderingDefault(false)%3B%0A%20%20%20%20%20%20%20%20Application.Run(new%20TestForm())%3B%0A%20%20%20%20%7D%0A%7D"></embed>
- usingSystem;
- usingSystem.Drawing;
- usingSystem.Windows.Forms;
- sealedclassTestForm:Form
- {
- privateNumericUpDownm_numericUpDown;
- publicTestForm(){
- InitializeComponent();
- }
- privatevoidInitializeComponent(){
- this.m_numericUpDown=newNumericUpDown();
- this.m_numericUpDown.Value=100;
- this.m_numericUpDown.Dock=DockStyle.Fill;
- this.m_numericUpDown.ThousandsSeparator=true;
- this.m_numericUpDown.Maximum=int.MaxValue;
- this.ClientSize=newSize(100,60);
- this.Controls.Add(this.m_numericUpDown);
- this.PerformLayout();
- }
- [System.STAThread]
- staticvoidMain(string[]args){
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(newTestForm());
- }
- }
这段代码是手写的;要是用VS2005/VS2008的设计器的话,这个例子的所有功能都能直接在设计器里指定。
NumericUpDown的内容的值可以用Value属性来设置或获取,类型为decimal。
截图:(输入不符合要求的字符时,默认行为是beep一下,没有工具条的提示)
相关推荐
c# .net Wince 数字输入控件 数字键盘 方便触控输入。类似HMI屏数字输入框
C#Text只能输入数字自定义控件。时候新手看。
c# winform textbox控件只能输入数字的几种方法
自制控件:C#中TextBox控件只允许输入数字
C#控件只能输入数字代码 最好弄个自定义控件,继承TextBox,重写OnKeyPress事件
车牌号码输入控件,通过点击输入简称、字母、数字,可自定义简称
C#控件,NumTextBox只可以输入数字,并且可以设置属性对数字作一些处理
非常好用的C#虚拟键盘控件,可以多处调用,源码+调用实例
ASP.Net TextBox控件只允许输入数字的几种方法
C#Winform限制Textbox只能输入数字,很好用的一段代码
利用C#.NET实现PC机与研华ADAM-4050模块数字量输入实例(MSComm控件)
C# textbox只能输入数字 是个不错的参考案例
C# button textbox 控件实现功能: ① 可以硬件键盘输入数字也可以C#编写的软件键盘输入数字; ② 软键盘仅支持;
自定义的一个TextBox控件,包含限制只能输入数字、验证邮箱、电话、手机、身份证号码、邮件地址等功能,提供源码,蛮适合初学者学习和使用的~~
只可输入数字,屏蔽其他字符,用正则表达式
VS2017中C#实现类似工业触摸屏的数字软键盘,应用在工控机PC替代工业触摸屏。此资源包含数字软键盘的最小值和最大值。参考工业触摸屏数字键盘来开发的。
一个简易的软键盘控件,设置关联的textbox控件后,按下按钮输入到关联的textbox,由于Text不知道怎么如何弄上标,所以符号和数字是用图片代替的.颜色的更改可以自己写属性更改;
TextStyle属性控制输入的文本类型,如果选择Numeric,就只能输入数字。选择Upper只能输入大写字母。 只要把生成的MyTextBox.dll 拖到工具箱里。就能直接使用了。 包含完整的源码。注释详细。。适合学习使用。
C# 非常漂亮的UI,显示LED数字屏显,加入VS的工具箱即可使用。还有HEX码输入框,IP地址输入框,欢迎下载使用,让界面更美观。