我是C#的新手,我正在制作不同的Windows窗体应用程序进行练习。我遇到的麻烦之一是列表并将字符串转换为int。现在,我的表单上有一个标签,文本框和按钮。我正在尝试让用户一次在文本框中输入1个数字。然后,我使用按钮让他们将该项“添加”到列表中。然后,我要接受用户输入的所有这些内容并添加它们。基本上,我正在尝试创建一种可用于计算几次测试或测验的平均值的表格(我想假设用户将输入整数,所以我不想使用双精度)。
private void btnQuizCalculate_Click(object sender, EventArgs e)
{
int average;
int quizScore;
List<int> scores = new List<int>();
int quizTotal = Convert.ToString(txtQuizGrade.Text);
}
我不确定这是否是正确的方法,但是我想让他们输入一个数字,然后当他们按btnQuizCalculate该数字时,该数字将被存储,然后再次清除文本框,让他们输入另一个数字。该按钮将执行3件事:存储数字,获取平均值,并让用户有机会输入更多数字(如果需要)。我在最后一部分遇到了麻烦,如果他们愿意,可以让他们输入更多的数字。另外,我不确定使用焦点是否是个好主意,因为我不确定在哪都可以包括在内。
您可以通过以下方式进行操作。
表格的设计:
当您单击添加按钮时,发生以下情况:
在文本框中输入的值将转换为Int并添加到List _scores中。
找到列表_score的平均值。
确定列表_score的总和。
得分和平均标签显示值。
注意:使用ListBox控件进行演示。
以下为代码:-自我说明。
public partial class Form1 : Form
{
List<int> _scores = new List<int>();
int average = 0;
int quizScore = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
int _score = int.TryParse(textBox1.Text, out int converted) ? converted: 0; // Correct Way Of Handling As Mentioned In Comments
_scores.Add(_score);
listBox1.Items.Add(_score);
textBox1.Text = null;
average = (int)_scores.Average();
quizScore = _scores.Sum();
label1.Text = $"Score: {quizScore}";
label2.Text = $"Average: {average}";
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
希望这会有所帮助。祝您学习愉快。
您也可以直接使用列表来做。
以下代码是代码示例,您可以看一下。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<int> list = new List<int>();
private void button1_Click(object sender, EventArgs e)
{
int a = 0;
if (int.TryParse(textBox1.Text, out a) == false)
{
MessageBox.Show("Please input again");
textBox1.Clear();
}
else
{
a = Convert.ToInt32(textBox1.Text);
list.Add(a);
label1.Text = string.Format("Average is {0}", list.Average());
}
}
}
}