Как получить значение контрольного списка?Я добавил значение, используя массив c # - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над калькулятором солнечной системы.Я добавил некоторые элементы в список проверки, используя массив, например: элемент списка проверки 1 содержит «Led Tv: 1 на 1 час / день, по 25 ватт каждый».см код ниже.

public addValues()
        {
            string[] values = new string[] { metroComboBox1.Text + " : " + textBox2.Text + " for " + textBox3.Text + " hours/day  " + " @ " + textBox1.Text + " watts each " };
            itemList.Items.AddRange(values);
        }

При нажатии кнопки я вызвал метод

private void itemAdd_Click(object sender, EventArgs e)
        {
            addValues();
            Double aa, bb, aba, cc, dd, ee;
            aa = Double.Parse(textBox1.Text);
            bb = Double.Parse(textBox2.Text);
            aba = Double.Parse(textBox3.Text);

            if(totalPower.Text == "0")
            {
                cc = aa * bb;
                totalPower.Text = cc.ToString();
            }
            else
            {
                cc = aa * bb;
                dd = Double.Parse(totalPower.Text);
                ee = cc + dd;
                totalPower.Text = ee.ToString();
            }
        }

Я удалил отмеченные элементы из списка, используя этот код.

private void itemRemove_Click(object sender, EventArgs e)
        {
            foreach (var item in itemList.CheckedItems.OfType<string>().ToArray())
                {
                    itemList.Items.Remove(item);
                }
        }

Проблема здесь в том, как автоматически уменьшить значение totalPower.Text при удалении элемента из списка?Пожалуйста, я буду рад, если вы сможете мне помочь.

1 Ответ

0 голосов
/ 23 сентября 2019

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

Я бы предложил посмотреть на нее под другим углом.Вы должны смоделировать вашу реальную проблему в вашем коде.Допустим, у вас есть класс для ваших элементов в списке с несколькими свойствами.Например:

public class ConsumptionItem {
 public string Description {get; set;}
 public double Count {get; set;}
 public double HoursPerDay {get; set;}
 public double Watts {get; set;}

 public string Label 
 { 
   get {return "What you want to appear in your list. You can use any property here, like " + HoursPerDay + " hours.";
 }
}

Затем в вашем CheckBoxList вы можете указать отображение свойства Label из вашего класса.Обратитесь к документации здесь , чтобы увидеть, как это работает.

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

Несколько предложений:

  1. Пожалуйста, используйте описательные имена для ваших переменных.Попытка выяснить, на что ссылаются aa, ab, ac, aac и т. Д., Может быть болезненной и тратить ваше время.
  2. Каждый раз, когда вы добавляете элемент, вы звоните на addValues() и добавляетеодин и тот же элемент каждый раз в список.Вы уверены, что хотите сделать именно это?
...