我正在使用WinForm。我有2个文本框。
目标:我希望textBox1镜像我在textBox2中输入的数字
问题:所有数字都有效,除非我在开头输入0。
测试用例:
textBox1 = 1203 - 正确无误
textBox2 = 1203 - 正确无误
textBox1 = 0123 - 作品
textBox2 = 123 - 与textBox1不匹配
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
int numb1, result;
numb1 = Convert.ToInt32(textBox1.Text);
result = numb1;
textBox2.Text = result.ToString();
}
catch (Exception)
{
textBox2.Text = "";
}
}
答案 0 :(得分:3)
由于您的文字字符串转换为数字,预计会发生这种情况。前导零在数字中没有意义,当您将该数字转换回字符串时,将不会有前导零。因此,只需复制Text属性而不进行转换。
但是,如果此代码暂时用于验证输入,请使用Int32.TryParse
代替Convert.ToInt32
private void textBox1_TextChanged(object sender, EventArgs e)
{
int numb1;
if(Int32.TryParse(textBox1.Text, out numb1))
textBox2.Text = textBox1.Text;
else
{
MessageBox.Show("Invalid number");
textBox2.Text = "";
}
}
Int32.TryParse删除了使用try / catch的必要性,因为如果转换失败,则只返回false。相反,Convert.ToInt32会引发异常。一般而言,如果您有可能避免异常,那么使用这种可能性而不是驱动您的逻辑捕获异常
答案 1 :(得分:0)
试试这个:
textBox1.Text = int.Parse(textBox2.Text) == 0 ? "0" : textBox2.Text;