C# 清除文本框时未处理的异常
可能重复: 我是C和堆栈溢出的新手,所以如果这个问题不合适或在错误的地方,请随意编辑或删除它 我制作了一个简单的计算器,但我有一个问题:当我清除其中一个文本框以输入另一个数字时,会显示一条消息,说明发生了未处理的异常,并选择退出或继续。如何阻止每次清除文本框时显示此消息C# 清除文本框时未处理的异常,c#,winforms,C#,Winforms,可能重复: 我是C和堆栈溢出的新手,所以如果这个问题不合适或在错误的地方,请随意编辑或删除它 我制作了一个简单的计算器,但我有一个问题:当我清除其中一个文本框以输入另一个数字时,会显示一条消息,说明发生了未处理的异常,并选择退出或继续。如何阻止每次清除文本框时显示此消息 private void button1_Click(object sender, EventArgs e) { int value1 = Convert.ToInt32(textBox1.Text); int
private void button1_Click(object sender, EventArgs e)
{
int value1 = Convert.ToInt32(textBox1.Text);
int value2 = Convert.ToInt32(textBox2.Text);
textBox3.Text = sum(value1, value2).ToString();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
int vlera1 = Convert.ToInt32(textBox1.Text);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
int vlera2 = Convert.ToInt32(textBox2.Text);
}
private void textBox3_TextChanged(object sender, EventArgs e)
{ }
int sum(int value1, int value2) {
return (value1) + (value2);
}
使用int.TryParsestring s,out int result,而不是Convert.toint32字符串值int fromBase
这是因为您试图将文本框的空数据转换为Int32
使用int.TryParsestring s,out int result,而不是Convert.toint32字符串值int fromBase
这是因为您试图将文本框的空数据转换为Int32
当您尝试将无法转换为int-to-int类型结构的字符串转换为int-to-int时,将收到FormatException。在进行转换之前,您可以始终使用int.TryParsestring s,out-int-result查看字符串是否能够进行int转换
范例
另一个解决方案
您可以始终使用try-catch语句来查看是否从您提供的代码中引发了异常,并在需要时执行某些操作
范例
注意:try-catch语句由一个try块和一个或多个catch子句组成,这些子句为不同的异常指定处理程序
谢谢,
我希望这对您有所帮助:当您尝试将无法转换为int-to-int类型的结构的字符串转换为int-to-int时,您将收到FormatException。在进行转换之前,您可以始终使用int.TryParsestring s,out-int-result查看该字符串是否能够进行int转换
范例
另一个解决方案
您可以始终使用try-catch语句来查看是否从您提供的代码中引发了异常,并在需要时执行某些操作
范例
注意:try-catch语句由一个try块和一个或多个catch子句组成,这些子句为不同的异常指定处理程序
谢谢,
我希望这对您有所帮助:为什么要使用vlera1和vlera2?为什么需要它们?@JonSkeet我看到了,但我无法将其与我的问题联系起来@赫克里:为什么不呢?这与问题完全相同:每当文本发生更改时,都会无条件地调用Convert.ToInt32,这与调用int.Parse类似。同样的解决方案也适用。不清楚为什么要在方法中执行转换,然后丢弃结果,但是…@Sirwanafi我想我得到的是用户在texbox中输入的内容,并将其指定为变量vlera1。就像我说的,我是新手,谢谢你的回复。你为什么使用vlera1和vlera2?你为什么需要它们?@JonSkeet我看到了,但我无法将其与我的问题联系起来@赫克里:为什么不呢?这与问题完全相同:每当文本发生更改时,都会无条件地调用Convert.ToInt32,这与调用int.Parse类似。同样的解决方案也适用。不清楚为什么要在方法中执行转换,然后丢弃结果,但是…@Sirwanafi我想我得到的是用户在texbox中输入的内容,并将其指定为变量vlera1。就像我说的,我是新手,谢谢你的回答。谢谢你,拉维德拉·巴格尔,但是当我看到你说的错误时,不能隐式地将类型“bool”转换为“int”。谢谢你,拉维德拉·巴格尔,但是当我看到你说的错误时,不能隐式地将类型“bool”转换为“int”。不,谢谢你。这是非常重要的helpful@hekri我很高兴能帮上忙。祝你有一个愉快的一天:不,谢谢你。这是非常重要的helpful@hekri我很高兴能帮上忙。祝您有个美好的一天:
if (int.TryParse(textBox1.Text, out vlera1))
{
//assign here
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
int x = 0; //Initialize a new int of name x and set its value to 0
if (int.TryParse(textBox1.Text, out x)) //Check if textBox1.Text is a valid int
{
int vlera1 = Convert.ToInt32(textBox1.Text); //Initialize a new int of name vlera2 and set its value to (textBox1.Text as int)
}
else
{
//DoSomething if required
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
int x = 0; //Initialize a new int of name x and set its value to 0
if (int.TryParse(textBox2.Text, out x)) //Check if textBox2.Text is a valid int
{
int vlera2 = Convert.ToInt32(textBox2.Text); //Initialize a new int of name vlera2 and set its value to (textBox1.Text as int)
}
else
{
//DoSomething if required
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
int vlera1 = Convert.ToInt32(textBox1.Text); //Initialize a new int of name vlera2 and set its value to (textBox1.Text as int)
}
catch (Exception EX)
{
MessageBox.Show(EX.Message); //(not required) Show the message from the exception in a MessageBox
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
try
{
int vlera2 = Convert.ToInt32(textBox2.Text); //Initialize a new int of name vlera2 and set its value to (textBox1.Text as int)
}
catch (Exception EX)
{
MessageBox.Show(EX.Message); //(not required) Show the message from the exception in a MessageBox
}
}