@cheIowek

Почему счётчик таймера на windows forms увеличивается на 2, а не на 1?

Всем здравствуйте, необходимо сделать так, чтобы переменная в классе увеличивалась на единицу при каждом срабатывании таймера. Я сделал следующее, и не могу понять, почему счётчик увеличивается на 2?
На форме есть только таймер и label.

public partial class Form1 : Form
    {
        class myClass
        {
            static public int counter = 0;
        }
        public Form1()
        {
            InitializeComponent();
            
            timer1.Interval = 200;
            timer1.Start();
            timer1.Tick += timer1_Tick;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            myClass.counter++;
            label1.Text = myClass.counter.ToString();
        }
    }
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
FoggyFinder
@FoggyFinder
Дело в том что существует 2 разные подписки на событие Tick - одно "автоматическое" созданное конструктором форм и второе "собственное".

VS показывает все ссылки если нажать на "reference" вверху:

614b6a2b8e3c2686381595.png

Удалив одну из них получим ожидаемое поведение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@cicatrix
было бы большой ошибкой думать
У тебя скорее всего две подписки на Tick оформлено.
Вот эта строчка у тебя в конструкторе:
timer1.Tick += timer1_Tick;
И ещё точно такая же, скорее всего, в Form1.Designer.cs присутствует. Убери одну из них
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы