Как создание нового объекта сбрасывает определенное значение в форме Windows - C # Приложение формы Windows - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь понять поведение выполнения моей программы.

У меня есть приложение в форме Windows, в котором есть 2 кнопки: «Инициировать» и «Увеличить»

Метод нажатия кнопки «Инициировать»есть вызов, чтобы сделать новый объект. Нажатие кнопки увеличения связано с функцией, которая увеличивается на 5.

Инициирование нажатия кнопки имеет следующее:

private void btnCreate_Click(object sender, EventArgs e)
{
      Ball testObj = new Ball();
}

Функция, которая увеличивает значение:

public void Increment()
{
    BallCount += 1;
}

BallCount определяется как автоматически реализованное свойство, например:

public int BallCount {get; private set;}

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

Код кнопки увеличения:

private void btnIncrement_Click(object sender, EventArgs e)
{          
     testObj.Increment();
     lblStats.Text = testObj.ToString();
}

Теперь, когда я запускаю свою программу и когда янажмите кнопку увеличения несколько раз, метка обновится и отобразит увеличенное значение, но когда я после этого нажимаю кнопку инициализации, значение метки сбрасывается в 0. Почему это происходит? Я нигде не сбрасываю значение BallCount.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

1 - Поскольку вы хотите установить текст метки как значение BallCount, вы можете найти его значение, вызвав свойство экземпляра testObj.BallCount.ToString();

2 - Кроме того, для любой и всех ваших формэлементы, чтобы найти ссылку Ball's testObj, вам нужно установить ее как свойство в вашей форме, например

public Ball testObj {get; set;}

В противном случае btnIncrement_Click не найдет экземпляр btnCreate_Click made.

0 голосов
/ 16 октября 2019

При нажатии кнопки «Инициировать» воссоздается Ball. TestObj = new Ball ();и теперь, поскольку BallCount находится в области testObj, он также обновился, и значение Integer по умолчанию равно нулю, и, следовательно, оно вернется к нулю.

Если вы хотите, чтобы на кнопку BallCount не влияла кнопка «Инициировать», сделайтеBallCount static

public static int BallCount {get;набор;}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...