Texbox在C#中复制另一个文本框

时间:2015-09-20 12:38:44

标签: c# .net winforms textbox

我正在使用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 = "";
        }
    }

2 个答案:

答案 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;