我在运行时更改了Textbox
的值,但是当用户使用退格键清除Textbox
时,我得到了无效字符串的异常。
private void txtTradePrice_TextChanged(object sender, EventArgs e)
{
txtRate.Text = (Convert.ToInt32(txtTradePrice.Text) * 12).ToString();
}
private void txtRate_TextChanged(object sender, EventArgs e)
{
txtTradePrice.Text = (Convert.ToInt32(txtRate.Text) / 12).ToString();
}
答案 0 :(得分:2)
您的代码必须检查字符串是否为空。当用户清除文本时,它变为空,转换为int将抛出异常,并且它不能将空白转换为整数值。
private void txtTradePrice_TextChanged(object sender, EventArgs e)
{
if(!string.IsNullOrEmpty(txtTradePrice.Text))
{
int number;
if(Int32.TryParse(txtTradePrice.Text, out number))
txtRate.Text = (number * 12).ToString();
}
}
private void txtRate_TextChanged(object sender, EventArgs e)
{
if(!string.IsNullOrEmpty(txtRate.Text))
{
int number;
if(Int32.TryParse(txtRate.Text, out number))
txtTradePrice.Text = (number / 12).ToString();
}
}
您应该始终使用Int.TryParse。
答案 1 :(得分:0)
你应该使用int.TryParse,因为它处理字符串问题。
private void txtTradePrice_TextChanged(object sender, EventArgs e)
{
int tradePrice = 0;
if(int.TryParse(txtTradePrice.Text, out tradePrice))
txtRate.Text = (tradePrice * 12).ToString();
}
private void txtRate_TextChanged(object sender, EventArgs e)
{
int rate = 0;
if(int.TryParse(txtRate.Text, out rate))
txtTradePrice.Text = (rate / 12).ToString();
}
有了这个,当字段为空时,或者出现任何其他文本问题(如输入中的无效字符)时,不会重新计算任何内容。