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

问题描述 投票:0回答:2

我正在使用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 = "";
        }
    }
c# .net winforms textbox
2个回答
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会引发异常。一般而言,如果您有可能避免异常,那么请使用这种可能性而不是驱动您的逻辑捕获异常


0
投票

试试这个:

textBox1.Text = int.Parse(textBox2.Text) == 0 ? "0" : textBox2.Text;

© www.soinside.com 2019 - 2024. All rights reserved.