我有3个文本框,我希望用户在其中输入任何数字以获得答案。
这是我到目前为止的代码:
int firstNumber;
int secondNumber;
int thirdNumber;
int answer;
firstNumber = 100;
secondNumber = 75;
thirdNumber = 50;
answer = firstNumber + secondNumber * thirdNumber;
MessageBox.Show(answer.ToString());
答案 0 :(得分:2)
要将字符串转换为int,请使用Int32.Parse
或Int32.TryParse
或Convert.ToInt32
int firstNumber = Int32.Parse(firstNumberTextBox.Text);
//throws exception if not convertible
或
int firstNumber;
bool result = Int32.TryParse(firstNumberTextBox.Text, out firstNumber);
//return false if not convertible
或
int firstNumber;
result = Convert.ToInt32(firstNumberTextBox.Text);
//throws exception if not convertible
使用
Convert.ToInt32(String)
方法相当于将值传递给Int32.Parse(String)
方法。通过使用来解释值 当前线程文化的格式约定。如果您愿意 如果转换失败,不要处理异常,你可以调用 而是
Int32.TryParse
方法。它返回Boolean
值 表示转换是成功还是失败。
您可以使用int
代替Int32
。
所以在你的情况下,似乎int.TryPars
更适合:
int firstNumber;
int secondNumber;
int thirdNumber;
int answer;
int.TryParse(firstNumberTextBox.Text, out firstNumber);
int.TryParse(secondNumberTextBox.Text, out secondNumber);
int.TryParse(thirdNumberTextBox.Text, out thirdNumber);
answer = firstNumber + secondNumber * thirdNumber;
MessageBox.Show(answer.ToString());
答案 1 :(得分:0)
正如所指出的,如果用户键入的值不是数字,Int32.TryParse
已经保护您免受异常的影响。
但我建议阻止用户输入无效值。您可以通过处理KeyPress
事件
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
(e.KeyChar != '.'))
{
e.Handled = true;
}
// only allow one decimal point
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
{
e.Handled = true;
}
}
查看this post了解详情。
这样您就可以确保输入有效,并且使用Int32.Parse
或Convert.ToInt32
是安全的。
答案 2 :(得分:0)
private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!Char.IsDigit(e.KeyChar)) e.Handled = true; } //To allow for backspace: private void TxtBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!(Char.IsDigit(e.KeyChar) && (e.KeyChar == (char)Keys.Back))) e.Handled = true; }
如果要添加其他允许的密钥,请查看密钥枚举并使用上述方法。 3.要将字符串转换为int,请使用Int32.Parse 4.添加&显示答案。