Private недопустим для данного элемента?

Вот как так получается-копирую внимательно ручками с книжки код и в результате получаю ворох ошибок
И что за странный способ выводить цифры через label, а не masked textbox?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sekundomer
{
    public partial class Form1 : Form
    {
        int m;
        int s;
        int ms;
        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 500;

            m = 0;
            s = 0;
            ms = 0;

            label1.Text = "0";
            label2.Text = "00";
            label3.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
            {
                timer1.Enabled = false;

                button1.Text = "Пуск";
                button2.Enabled = true;

                button1.Text = "Стоп";
                button2.Enabled = false;

            }
            private   void timer1_Tick(object sender, EventArgs e)
            {
                if (label3.Visible)
                {
                    if (s < 59)
                    {
                        s++;
                        if (s < 10)
                            label2.Text = s.ToString();

                    }
                    else
                    {
                        m = 0;
                        label1.Text = "00";
                    }
                }
                label3.Visible = false;
            }
            else
            label3.Visible = true;
        }
    }
}
  • Вопрос задан
  • 441 просмотр
Решения вопроса 3
@Black_Tulip
Как минимум нужно правильно расставить скобки
private void button1_Click(object sender, EventArgs e)
{
    if (timer1.Enabled)
    {
        timer1.Enabled = false;

        button1.Text = "Пуск";
        button2.Enabled = true;

        button1.Text = "Стоп";
        button2.Enabled = false;

    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (label3.Visible)
    {
        if (s < 59)
        {
            s++;
            if (s < 10)
                label2.Text = s.ToString();

        }
        else
        {
            m = 0;
            label1.Text = "00";
        }
        label3.Visible = false;
    }        
    else 
        label3.Visible = true;
}
Ответ написан
Комментировать
@kvasek
У вас методы вложенные друг в друга, попробуйте вынести метод timer1_Tick.
Попробуйте вот так
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sekundomer
{
    public partial class Form1 : Form
    {
        int m;
        int s;
        int ms;
        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 500;

            m = 0;
            s = 0;
            ms = 0;

            label1.Text = "0";
            label2.Text = "00";
            label3.Visible = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled)
            {
                timer1.Enabled = false;

                button1.Text = "Пуск";
                button2.Enabled = true;

                button1.Text = "Стоп";
                button2.Enabled = false;

            }
            else
            label3.Visible = true;
        }

            private   void timer1_Tick(object sender, EventArgs e)
            {
                if (label3.Visible)
                {
                    if (s < 59)
                    {
                        s++;
                        if (s < 10)
                            label2.Text = s.ToString();

                    }
                    else
                    {
                        m = 0;
                        label1.Text = "00";
                    }
                }
                label3.Visible = false;
            }
    }
}
Ответ написан
Комментировать
tomnolane
@tomnolane
профессиональный разработчик
вот полностью работающий код (п.с. на форме должно быть у вас 3 кнопки, 3 label и 1 timer, названия у всех по умолчанию + у всех кнопок - события click должно быть (также по умолчанию) и событие Tick у timer)

public partial class Form1 : Form
    {
        int m = 0;
        int s = 0;
        int ms = 0;
        public Form1()
        {
            InitializeComponent();

            // интервал - с какой частотой будет обновляться таймер (п.с. 2 раза в секунду = 500 миллисекунд
            timer1.Interval = 500;

            // называем кнопки
            button1.Text = "Пуск"; 
            button2.Text = "Пауза";
            button3.Text = "Сброс"; 

            // присваиваем label'ам "текст"
            label1.Text = "0"; // минуты
            label2.Text = "00"; // секунды
            label3.Text = "000"; // миллисекунды

            button2.Enabled = false; //  кнопку "приостановить" - "замораживаем" 
            button3.Enabled = false; //  кнопку "сброс" - "замораживаем" 
        }

        private void button1_Click(object sender, EventArgs e)
        { 
            // если таймер включен
            if (timer1.Enabled)
            {
                timer1.Enabled = false; // останавливаем таймер

                button1.Text = "Пуск"; // переименовываем кнопку
                button2.Enabled = false;  // кнопку "приостановить" - "замораживаем" - т.е. делаем неактивной

            }
            else //если таймер выключен, тогда его запускаем
            {
                // обнуляем значения (понадобится после второго и последующего запуска)
                m = 0;
                s = 0;
                ms = 0;

                timer1.Enabled = true; // запускаем таймер
                button1.Text = "Стоп"; // переименовываем кнопку
                button2.Enabled = true; // кнопку "приостановить" - "размораживаем" - позволяем делать её кликабельной 
            }
        }
        private  void timer1_Tick(object sender, EventArgs e) // то, что делает таймер, когда она запущен
        {
             
            if (s < 60) // если секунды меньше 60
            {
                s++; // увеличиваем секунды 
                label2.Text = s.ToString(); // записываем в лабел2 где секунды (предварительно int переделав в string) 
                // п.с. компилятор справа налево "читает"
            }
            else // если секунды равны 60 или более, то
            {
                m++; //увеличиваем минуты
                label1.Text = m.ToString(); // записываем в лабел для минут
            }

            label3.Text = DateTime.Now.Millisecond.ToString(); // записываем в лабел3 для миллисекунд текущие миллисекунд по времени 
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (timer1.Enabled) { timer1.Stop(); button2.Text = "Продолжить"; button3.Enabled = true; }
            else { timer1.Start(); button2.Text = "Пауза"; button3.Enabled = false; }
        } 

        private void button3_Click(object sender, EventArgs e) //кнопка "сброс" времени
        {
            timer1.Enabled = false; 

            // присваиваем первоначальные значения
            button1.Text = "Пуск";

            // обнуляем значения
            m = 0;
            s = 0;
            ms = 0;

            label1.Text = "0";
            label2.Text = "00";
            label3.Text = "000";

            button2.Enabled = false; //  кнопку "приостановить" - "замораживаем" 
            button3.Enabled = false; // тоже самое с кнопкой "сброс"
        }

       
    }

7ba241471aa84f21a8df1aa09eff6268.PNG
думаю разберётесь
п.с. писал по проще - без рефакторинга

п.с.с.
Private недопустим для данного элемента

весь ваш код неправильный и говорить о private преждевременно, да и (как я увидел и понял, что в книге должно было быть) -он никакой роли тут вообще не играет
И что за странный способ выводить цифры через label, а не masked textbox?

на вкус и цвет... п.с. я тоже всегда вывожу в label
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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