C#中 int a = Convert.ToInt32(textBox2.Text.Trim());输入字符串格式不正确,什么状况 5

privatevoidtextBox2_TextChanged(objectsender,EventArgse){textBox2.MaxLength=3;inta=Co... private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox2.MaxLength = 3;
int a = Convert.ToInt32(textBox2.Text.Trim());
if (a > 100)
{ textBox2.Text = ""; }
}

各位大神,怎么回事啊
输入120进去,为什么不能把字符串里的数值转换为整形类呢,总是出错
展开
 我来答
a4257748
2014-01-25 · 超过19用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:46.5万
展开全部

我说一下你的逻辑吧,你输入12的时候都没问题,当你输入0的时候,由于a>100了,所以,你会将TextBox2的文本变成空字符串"",这没问题,系统按照你的要求将TextBox2里面的数据更改掉了,但是,你要知道,系统在将120变成""的过程中,同样会触发 textBox2_TextChanged这个事件!!!那么,int a = Convert.ToInt32(textBox2.Text.Trim());这句话肯定就报错了!!不信你可以试一下,当你写一个1在TextBox2中,然后删掉它,也一定会崩溃的。解决办法很简单,看下图:

百度网友d6ce041
2014-01-25 · TA获得超过364个赞
知道小有建树答主
回答量:420
采纳率:0%
帮助的人:393万
展开全部
好像Convert.ToInt32 只能转换object类型的,,而你里面的string类型的,,所以报错。。你可以使用int.parse(textbox2.text.trim())
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋梵峻
2014-01-25 · 超过28用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:67.8万
展开全部
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox1.MaxLength = 3;
int a = 0;
if (textBox2.Text != "")//先判断一下是否为空;
{
a = Convert.ToInt16(textBox2.Text.Trim());
}
if (a > 100)
{
textBox2.Text = "";
textBox2.Focus();
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
realbogey
2014-01-25 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:84
采纳率:0%
帮助的人:85万
展开全部
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox2.MaxLength = 3;
string input=textBox2.Text.Trim();
if(input=="")
{
MessageBox.Show("输入为空,或者不是数字");
}else{

int a=0;
if(int.TryParse(input,out a))
{
if(a>100)
textBox2.Text="";
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FoolRabbit编程
2014-01-25 · 知道合伙人数码行家
FoolRabbit编程
知道合伙人数码行家
采纳数:619 获赞数:3805
毕业于苏州大学,4年编程经验,对WPF有研究。

向TA提问 私信TA
展开全部
问题在于
textBox2.Text = ""

置成空的时候又触发这个事件,空转换成整型出错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式