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

Texbox Copies Another Textbox in C#

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

这是预期的,因为您的文本字符串已转换为数字。前导零在数字中没有意义,当您将该数字转换回字符串时,将没有前导零。所以,直接复制 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 的必要性,因为如果转换失败,它只是 return false。相反,Convert.ToInt32 会引发异常。一般来说,如果你有可能避免异常,那么就使用这种可能性而不是驱动你的逻辑捕获异常

试试这个:

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