C#、文本框TextBox输入的数据我如何判断它输入的是什么类型的数据?

if(){MessageBox.Show("年龄请输入数字类型!")}if的判断条件怎么写?... if()

MessageBox.Show("年龄请输入数字类型!")


if的判断条件怎么写?
展开
 我来答
lpcclown
2009-11-11 · TA获得超过154个赞
知道小有建树答主
回答量:129
采纳率:100%
帮助的人:113万
展开全部
这种情况 你应当用下拉框实现 网上注册用户什么的都是这样的

如果你一定要用textbox实现 那么你看看下面的文章

当界面上要用户输入只有数字的字符时,默认的Textbox是不能胜任的,网上有很多网友们提供了很多的做法,我总结了一下写了一个在C#下的实现,做到了如下的几点:
1:只能输入类似这样的字符:-123456.789;1234.789;
2:在输入的字符串中不能存在两个点符:12456.78//正确;12.456.78//不正确;
3:如果表示负数可以在字符串的最前面加一个减号“-”,也只能加到弟一个字符的位置;
4:可以用复制粘帖功能和菜单功能,但是只对能正确格式的字符串有效,比如:12.34可以,Abc不可以;
5:只是得到一个字符串,还可以在这个基础上再改进自己所需的,比如添加对十六进制的支持等。
代码如下在.NET下用C#写的:

using System;
using System.Windows.Forms;

namespace NumTextBox
{
/// <summary>
/// NumTextBox 的摘要说明。
/// </summary>
public class TextBoxNumEx:System.Windows.Forms.TextBox
{
public const int WM_CONTEXTMENU = 0x007b;//右键菜单消息
public const int WM_CHAR = 0x0102; //输入字符消息(键盘输入的,输入法输入的好像不是这个消息)
public const int WM_CUT = 0x0300; //程序发送此消息给一个编辑框或combobox来删除当前选择的文本
public const int WM_COPY = 0x0301; //程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板
public const int WM_PASTE = 0x0302; //程序发送此消息给editcontrol或combobox从剪贴板中得到数据
public const int WM_CLEAR = 0x0303; //程序发送此消息给editcontrol或combobox清除当前选择的内容;
public const int WM_UNDO = 0x0304; //程序发送此消息给editcontrol或combobox撤消最后一次操作

public TextBoxNumEx()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case WM_CHAR:
System.Console.WriteLine(m.WParam);
bool isSign = ((int)m.WParam == 45);
bool isNum = ((int)m.WParam >= 48) && ((int)m.WParam <= 57);
bool isBack = (int)m.WParam == (int)Keys.Back;
bool isDelete = (int)m.WParam == (int)Keys.Delete;//实际上这是一个"."键
bool isCtr = ((int)m.WParam == 24) || ((int)m.WParam == 22) || ((int)m.WParam == 26) ||((int)m.WParam == 3);

if( isNum || isBack || isCtr)
{
base.WndProc (ref m);
}
if (isSign)
{
if (this.SelectionStart!=0)
{
break;
}
base.WndProc (ref m);
break;
}
if (isDelete)
{
if (this.Text.IndexOf(".")<0)
{
base.WndProc (ref m);
}
}
if ((int)m.WParam == 1)
{
this.SelectAll();
}
break;
case WM_PASTE:
IDataObject iData = Clipboard.GetDataObject();//取剪贴板对象

if(iData.GetDataPresent(DataFormats.Text)) //判断是否是Text
{
string str = (string)iData.GetData(DataFormats.Text);//取数据
if (MatchNumber(str))
{
base.WndProc (ref m);
break;
}
}
m.Result = (IntPtr)0;//不可以粘贴
break;
default:
base.WndProc (ref m);
break;
}
}
private bool MatchNumber(string ClipboardText)
{
int index=0;
string strNum = "-0.123456789";

index = ClipboardText.IndexOf(strNum[0]);
if (index>=0)
{
if (index>0)
{
return false;
}
index = this.SelectionStart;
if (index>0)
{
return false;
}
}

index = ClipboardText.IndexOf(strNum[2]);
if (index!=-1)
{
index = this.Text.IndexOf(strNum[2]);
if (index!=-1)
{
return false;
}
}

for(int i=0; i<ClipboardText.Length; i++)
{
index = strNum.IndexOf(ClipboardText[i]);
if (index <0)
{
return false;
}
}
return true;
}
}
}

参考资料: http://blog.csdn.net/hbxtlhx/archive/2004/11/12/178510.aspx

laughm
推荐于2016-11-06 · TA获得超过133个赞
知道答主
回答量:68
采纳率:0%
帮助的人:51.6万
展开全部
用正则表达式来判定。

string pattern = @"\d{1,2}+";//一到二位数字
string strAge = "20";//this.txtAge.Text.Trim();
if (!System.Text.RegularExpressions.Regex.IsMatch(strAge, pattern))
{
MessageBox.Show("年龄请输入数字类型!")
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蝶儿忙
2009-11-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:2629
采纳率:0%
帮助的人:0
展开全部
可以尝试强制类型转换

try{
Convert.ToInt32(文本);

}
catch{
MessageBox.Show("年龄请输入数字类型!")

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乐园小cathy
2009-11-11 · TA获得超过106个赞
知道答主
回答量:115
采纳率:0%
帮助的人:0
展开全部
private bool CheckNum(string str)
{
try
{
double temp;
temp = double.Parse(str);
return true;
}
catch
{
return false;
}
}
if(!CheckNum(textbox的值))

MessageBox.Show("年龄请输入数字类型!")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anglaider
2009-11-11 · 超过13用户采纳过TA的回答
知道答主
回答量:74
采纳率:100%
帮助的人:40.8万
展开全部
用正则表达式是最好的

120|((1[0-1]|\d)?\d) 验证输入的是0-120岁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式