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