Автоматическое вычисление значения при выборе десятичной дроби в выпадающем списке

#c# #winforms #combobox

#c# #winforms #выпадающий список

Вопрос:

Я пытаюсь получить выбранное значение из моих 4 выпадающих списков и автоматически сложить их вместе в форме Windows. Элементами выпадающих списков являются десятичные дроби, 0,75, 0,8 и т.д. Как мне добавить все значения, выбранные из выпадающих списков, в текстовое поле?

Я пробовал уже 5 часов и действительно не могу понять это. К вашему сведению, я действительно новичок.

Спасибо!

Комментарии:

1. Используйте ComboBox.SelectedIndexChanged событие.

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

Ответ №1:

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

 private void Form1_Load(object sender, EventArgs e)
{
    foreach (var comboBox in this.Controls.OfType<ComboBox>())
    {
        comboBox.TextChanged  = ComboBox_TextChanged;
        InitializeComboBox(comboBox);
    }
}

private void ComboBox_TextChanged(object sender, EventArgs e)
{
    double result = 0;
    foreach (var comboBox in this.Controls.OfType<ComboBox>())
    {
        if (!string.IsNullOrEmpty(comboBox.Text))
        {
            result  = Convert.ToDouble(comboBox.Text);
        }
    }

    textBox1.Text = result.ToString();
}

private void InitializeComboBox(ComboBox comboBox)
{
    for (int index = 0; index < 10; index  )
    {
        comboBox.Items.Add(index   0.5);
    }
}
  

Комментарии:

1. Однако у меня возникла проблема: в моей форме есть еще 2 выпадающих списка, которые я НЕ хочу добавлять к вычислению, но, похоже, они все равно туда попадают! 🙂

2. Вы можете исключить дополнительные два поля со списком, отфильтровав запрос с помощью лямбда-выражения Where . gist.github.com/ivayle /…