如何在转换为 int32 时使类变量等于我的文本框值



我收到一个错误,告诉我该值的数据类型不正确。

我尝试过解析并尝试解析。

namespace ScoreCalculator
{
public partial class ScoreCalculator : Form
{
Int32 scoreTotal = 0;
Int32 scoreCount = 0;
public ScoreCalculator()
{
InitializeComponent();
}
private void AddBtn_Click(object sender, EventArgs e)
{
Int32 average;

scoreCount +=1;
// the error vvvvvvv
scoreTotal += Convert.ToInt32(scoreTotalTxt.Text);
scoreTotalTxt.Text = Convert.ToString(scoreTotal);
scoreCountTxt.Text = Convert.ToString(scoreCount);
average = scoreTotal / scoreCount;
averageTxt.Text = average.ToString();
scoreTxt.Focus();
}
}

它应该让我使 scoreTotal 等于我的 scoreTotalTxt 文本框中的值加上它以前的数字。

将字符串转换为整数的最安全方法是使用int.TryParse方法,该方法接受要转换的字符串和一个在转换成功时设置为该值的out参数。它返回一个指示成功的bool,因此您可以在if条件下使用它。

另请注意,您可以在任何object上调用ToString而不是Convert.ToString

例如:

private void AddBtn_Click(object sender, EventArgs e)
{
// Make sure we can convert our number first
int additionalScoreTotal;  // This will hold the converted value
if (int.TryParse(scoreTotalTxt.Text, out additionalScoreTotal))
{
scoreCount++;
scoreTotal += additionalScoreTotal; // If we made it past the if, this has our value
scoreTotalTxt.Text = scoreTotal.ToString();
scoreCountTxt.Text = scoreCount.ToString();
int average = scoreTotal / scoreCount;
averageTxt.Text = average.ToString();
scoreTxt.Focus();
}
else
{
MessageBox.Show("Error: The value in 'ScoreTotal' is not a valid integer");
// Optionally, select the problematic text so they can change it
scoreTotalTxt.Focus();
scoreTotalTxt.SelectAll();
}
}

Convert.ToInt32(scoreTotalTxt.Text);如果您尝试将空字符串(文本框中没有任何内容(转换为数字,则会失败并显示错误"输入字符串格式不正确">

我建议您检查总框是否为空,并在尝试转换之前将其设置为一个值:

if(string.IsNullOrWhitespace(scoreTotalTxt.Text))
scoreTotalTxt.Text = "0";

相关内容

最新更新