Текстовое поле не будет обновлять общее количество

#c# #winforms

#c# #winforms

Вопрос:

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

 private void PictureBoxWindFarmMouseClick(object sender, MouseEventArgs e)
{
  decimal captot = 0;
  // Read mouse-click position
  int x = e.X;
  int y = e.Y;
  //collects varibles from the form 
  int hei = _heightTrackBar.Value;
  float rad = (_radiusTrackBar.Value)*0.01f ;
  int bla = Convert.ToInt32(_numberOfBladesUpDown.Value);
  Color pol = colorDialog1.Color;
  Color rot = colorDialog2.Color;
  bool clo = _clockwiseCheckBox.Checked;
  decimal cap = _capacityUpDown.Value;
  captot  =  cap;
  // Create wind turbine at this position, uses collected varibles
  WindTurbine turbine = new WindTurbine( hei, rad, bla, clo, pol, rot, cap, x, y);
  // Add wind turbine to farm list
  _turbines.Add(turbine);
  // Force redraw of the picture box to show changes
  _pictureBoxWindFarm.Refresh();
  _statusLabel.ResetText();
  _statusLabel.Text = ("these"  _turbines.Count   "wind turbines can generate a total of"   captot   "MW of power.");
}
 

текстовое поле в левом нижнем углу

текстовое поле не добавляется

обновляется, если значение больше

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

1. Предполагается ли сбрасывать переменную captot каждый раз, когда вы нажимаете на picturebox … разве это не должна быть переменная, установленная вне обработчика событий?

2. Какое текстовое поле? Также вы отладили это. Вы знаете, как использовать step debugger?

3. Вы инициализируете catpot значение 0 и добавляете только мощность вновь созданной турбины. Итак, как на экране будет отображаться общая емкость?

4. переменная captot должна начинаться с 0 и добавлять к себе cap, а затем отображаться в текстовом поле

Ответ №1:

GI1 был прав, переменную просто нужно было объявить вне события