#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 был прав, переменную просто нужно было объявить вне события