C# Windows Форма заявки - практика со списками - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в 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);
}

Я не уверен, что это правильный способ сделать это, но я хочу позволить им ввести число, тогда когда они наберут sh btnQuizCalculate, что число будет сохранено, а затем текстовое поле снова для них ясно ввести другой номер. Кнопка будет выполнять 3 действия: сохранять цифры, получать средние значения и давать пользователю возможность ввести больше чисел, если они этого захотят. У меня проблемы с последней частью, позволяя им вводить больше цифр, если они хотят. Также я не был уверен, что использование фокуса было бы хорошей идеей, потому что я тоже не был уверен, где это включить.

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Вы можете сделать это следующим образом.

Дизайн формы:

enter image description here

При нажатии кнопки «Добавить» происходит следующее:

  1. Значение, введенное в TextBox, преобразуется в Int и добавляется в список _scores.

  2. Найдено среднее значение _ _ _.

  3. Определяется сумма _ _ баллов списка.

  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 голосов
/ 04 февраля 2020

Вы также можете использовать список напрямую, чтобы сделать это.

Следующий код является примером кода, и вы можете посмотреть.

   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());
            }
        }
    }
}
...