如何从文本框中获取数字

时间:2015-09-11 00:50:06

标签: c# winforms

我有3个文本框,我希望用户在其中输入任何数字以获得答案。

这是我到目前为止的代码:

int firstNumber;
int secondNumber;
int thirdNumber;
int answer;
firstNumber = 100;
secondNumber = 75;
thirdNumber = 50;
answer = firstNumber + secondNumber * thirdNumber;
MessageBox.Show(answer.ToString());

3 个答案:

答案 0 :(得分:2)

要将字符串转换为int,请使用Int32.ParseInt32.TryParseConvert.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.ParseConvert.ToInt32是安全的。

答案 2 :(得分:0)

  1. 创建一个窗体或窗口,其中有3个TextBox,命名firstNumber,secondNumber,thirdNumber。
  2. 测试数字:
  3. 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.添加&显示答案。