C#Windows窗体应用程序-列表练习

问题描述 投票:0回答:2

我是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件事:存储数字,获取平均值,并让用户有机会输入更多数字(如果需要)。我在最后一部分遇到了麻烦,如果他们愿意,可以让他们输入更多的数字。另外,我不确定使用焦点是否是个好主意,因为我不确定在哪都可以包括在内。

c# visual-studio programming-languages windows-forms-designer
2个回答
1
投票

您可以通过以下方式进行操作。

表格的设计:

enter image description here

当您单击添加按钮时,发生以下情况:

  1. 在文本框中输入的值将转换为Int并添加到List _scores中。

  2. 找到列表_score的平均值。

  3. 确定列表_score的总和。

  4. 得分和平均标签显示值。

注意:使用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());
            }
        }
    }

希望这会有所帮助。祝您学习愉快。


0
投票

您也可以直接使用列表来做。

以下代码是代码示例,您可以看一下。

   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());
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.