C#中如何检查文本框的输入信息是不是为数字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何检查文本框的输入信息是不是为数字?相关的知识,希望对你有一定的参考价值。

请按以下要求:
要求编写文本框的Leave事件处理程序,若输入的不是数字,则提示输入有误,并要求重新输入。先用try语句尝试将文本框中输入的信息以int.Parse()方法转换成数值型,若转换失败,即输入的内容为非数值型,就在catch语句中做出提示,要求重新输入。
代码怎么写,求教。

楼上用正则判断,效率较低,其实C#自带的TryParse就ok的
int tmp;
if(!int.TryParse(textbox1.Text, out tmp))
MessageBox.Show("请正确输入数字");
追问

请按要求!

追答

汗,我这种做法是效率最高的做法,难道你那个是考试题?那你的老师简直是误人子弟啊,try语句是很耗性能的做法,按你的要求写一遍吧:
try
int tmp = int.Parse(textbox1.Text);
catch(Exception)
MessageBox.Show("请正确输入数字");

参考技术A 如果你是程序员你问这个你不配,如果你是做题目 请对下面回答你问题的兄弟客气点,说个谢谢。
try
int tmp = int.Parse(textbox1.Text);
catch(Exception)
MessageBox.Show("请正确输入数字");

这是对的。
参考技术B

    if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text.Trim(), "^\\\\d+$")
    //是数字

    12int num;bool b = int.TryParse(textBox1.Text,out num);//TryParse()是把字符串转换为int类型,转换成功则返回一个true。

int tmp;
if(!int.TryParse(textbox1.Text, out tmp))
MessageBox.Show("请正确输入数字");

参考技术C if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text.Trim(), "^\\d+$"))

//是数字
追问

请按要求!

参考技术D 当然用TryParse啊,人家专门提供了这个方法,高效实用,干嘛非得Try、Catch啊?

vb中,如何限制输入的文本框的内容只能是数字数或者字母?

比如我我限制某一文本框里面输入的内容只能是数(可以是小数),请问如何实现呢?如果限制只能输入整数,请问如何实现呢?如果限制只能输入字母请问如何实现呢?

参考技术A Private Sub Text1_Change()'有点懒
If IsNumeric(Text1) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text1.SetFocus
Text1.SelStart = Len(Text1)
SendKeys "BACKSPACE"
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If Chr(KeyAscii) Like "[a-zA-Z]" = False Then
MsgBox "不是字母,请输入字母", 0, "提示"
KeyAscii = 0
End If
End Sub
Private Sub Text3_Change()
If IsNumeric(Text3) = False Then
MsgBox "不是数字,请输入数字", 0, "提示"
Text3.SetFocus
Text3.SelStart = Len(Text3)
SendKeys "BACKSPACE"
ElseIf Val(Text3) - CLng(Text3) <> 0 Then'有点懒
MsgBox "不是整数,请输入整数", 0, "提示"
End If
End Sub追问

sendkeysbackspace 是什么意思呢?

追答

退格(删除。看你键盘上的名称,应该是一样)。主要针对键盘操作。不然就如推荐答案,只是简单的理论操作。否则会有漏洞或叫不完善。

本回答被提问者采纳
参考技术B Dim 输入限制 As String = "0123456789.abcdefghijklmnopqrstuvwxyz"
Dim 输入字符 As Char = e.KeyChar
If InStr(输入限制, 输入字符) <> 0 Or e.KeyChar = ChrW(8) Then
If 输入字符 = "." And InStr(TextBox1.Text, 输入字符) <> 0 Then
e.Handled = True
Else
e.Handled = False
End If
End If
这段代码写在文本框的 KeyPress 事件里,.NET 的,6.0 好像类似,但没有 e.Handled = True 或者 False,这里为 True 时改成直接退出过程“Exit Sub”,False 不写了好像行,没有 6.0 没法给你试试
参考技术C 这个需要在文本框的keypress事件中对输入的keyascii进行检查, 如果不满足要求则输入无效,例如只能输入字母程式如下:
private sub Text1_keypress(KeyAscii as Integer)
select case keyascii
case 65 to 90,97 to 122 'A-Z, a-z

case else
Keyascii=0
end select
end sub
参考技术D 只能输入数字
Private Sub Form_Resize()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub
Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
'如果输入的不是数字,删除非数字
Text1.Text = Val(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End If
End Sub

只能输入整数
Private Sub Form_Resize()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)

End Sub
Private Sub Text1_Change()
tmp = ""
For n = 1 To Len(Text1.Text)
If Asc(Mid(Text1.Text, n, 1)) > 47 And Asc(Mid(Text1.Text, n, 1)) < 58 Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = Val(tmp)
Text1.SelStart = Len(Text1.Text)
End Sub

只输入字母
Private Sub Text1_Change()
'65 97 90 122
tmp = ""
For n = 1 To Len(Text1.Text)
If (Asc(Mid(Text1.Text, n, 1)) > 64 And Asc(Mid(Text1.Text, n, 1)) < 91) Or (Asc(Mid(Text1.Text, n, 1)) > 96 And Asc(Mid(Text1.Text, n, 1)) < 123) Then
tmp = tmp & Mid(Text1.Text, n, 1)
End If
Next
Text1.Text = tmp
Text1.SelStart = Len(Text1.Text)
End Sub
第5个回答  2013-02-08 '*********************************************************************************************
'名称 Sub_CheckNum
'作者   Morn Woo
'功能 检查键入的是否是数字 ,不是则释放按键
'参数 iPressKey(引用传递):按键的ASCII码;如果要处理浮点数的输入,则要把已经输入的部分作为参数sstr 传入
'应用方法 在keypress事件中调用,用事件的KeyAscii参数作为这里的参数iPressKey
'*********************************************************************************************
Sub Sub_CheckNum(ByRef iPressKey As Integer, Optional sStr = "")
sStr = Trim(sStr)
If Len(sStr) = 0 Then
'1处理自然数输入的情况
Select Case iPressKey
Case 48 To 57, 8, 13 '8是backspace,131enter
'处理数字字符问题
Case Else:: iPressKey = 0
End Select
Else
'2处理浮点数输入的情况
Select Case iPressKey
Case 45 '处理负号字符问题
If InStr(sStr, "-") > 0 Then: iPressKey = 0
Case 48 To 57, 8, 13 '处理数字字符问题
Case 44: If sStr = "" Then iPressKey = 0 '处理逗号字符问题
Case 46 '处理小数点字符问题
If InStr(sStr, ".") > 0 Then: iPressKey = 0
Case Else:: iPressKey = 0
End Select
End If
End Sub

以上是关于C#中如何检查文本框的输入信息是不是为数字?的主要内容,如果未能解决你的问题,请参考以下文章

c#如何判断文本框中是不是是数字

无法将文本框的输入限制为数字 C# [重复]

C#限制文本框输入

C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示

javaswing文本框不能输入中文

c#中的文本框里怎么判断输入的内容是啥类型