Top.Mail.Ru

MS Visual Studio 2010. Переменные-флаги

Знакомство с элементом управления Timer. Использование переменных логического типа.

При щелчке на кнопке «Пуск» шарик начинает двигаться. Направление движения зависит от состояния переменной-флага. При достижении границы панели значение переменной-флага меняется на противоположное. Скорость перемещения шарика можно изменять при помощи «ползунка».

Флаг – переменная логического (bool) типа, которая используется для того, чтобы показать, разрешено или запрещено какое-либо действие. Если флаг равен true, то говорят, что «флаг поднят», если false «флаг опущен».

Элемент управления Timer

Элемент управления Timer (таймер) используется для выполнения действия через определенный промежуток времени. Основное свойство элемента – Interval – задает интервал времени, определяющий, как часто таймер должен уведомлять приложение. Свойство Interval задается в миллисекундах (1000 миллисекунд = 1 секунде).

Единственное событие таймера – Tick.

На рисунке ниже представлены элементы управления, используемые в работе и рекомендуемые значения свойства Name для них:

переменные-флаги

Разработка приложения

Откройте среду Microsoft Visual Studio и создайте новый проект (решение) с именем «Var_flags».

Разместите элементы управления на форме, как на рисунке выше. Еще в приложении потребуется элемент управления Timer. После перетаскивания его на форму значок таймера будет отображаться в нижней части окна Visual Studio.

В компонент PictureBox подгрузите картинку шарика.

Объявляем переменную flag булевского типа. Договоримся, что если флаг поднят (flag==true), то шарик движется вправо, если опущен (flag==false) – шарик движется влево. Также нам понадобится переменная shag целого типа (шаг смещения шарика).

public partial class Form1: Form

    {

        public bool flag = true;

        public int shag = 1;

        public Form1()

        {

            InitializeComponent();

        }

Движение шарика (элемент управления PictureBox) осуществляется с использованием элемента управления Timer. Свойство Interval компонента Timer рекомендуется установить равным 100.

При включенном таймере на каждый «тик» таймера происходит приращение горизонтальной координаты Left элемента управления PictureBox. Величина приращения помещена в переменную shag целочисленного типа и связана с элементом управления TrackBar.

 На событие ValueChanged для TrackBar:

 private void trackBar1_ValueChanged(object sender, EventArgs e)

        {

            shag = trackBar1.Value;

            lbShag.Text = "" + shag;

        }

При щелчке на кнопке BtnPusk:

  private void btnPusk_Click(object sender, EventArgs e)

        {

            if (!timer1.Enabled)

            {

                btnPusk.Text = "Стоп";

                timer1.Enabled = true;

            }

            else

            {

                timer1.Enabled = false;

                btnPusk.Text = "Пуск";

                lbNapr.Text = "Шарик никуда не движется";

            }

        }

На событие Tick таймера происходит движение шарика.

private void timer1_Tick(object sender, EventArgs e)

        {

            if (flag)   // если флаг поднят

            {

        // увеличиваем свойство Left элемента управления PictureBox на величину shag

              pictureBox1.Left += shag;

              lbFlag.Text = "Флаг поднят"; //     в метку lbflag выводим надпись «Флаг поднят»

        //  в метку LbNapr выводим надпись «Шарик движется вправо с шагом» + величина шага

                lbNapr.Text = "Шарик движется вправо с шагом " + shag;

       //   если шарик выходит за правую границу панели, то опускаем флаг

                if (pictureBox1.Left +20 >= panel1.Width)

                    flag = false;             

            }

            else if(!flag)  // если флаг опущен

            {

       //   уменьшаем свойство Left элемента управления PictureBox на величину shag

                pictureBox1.Left -= shag;              

                lbFlag.Text = "Флаг опущен";

                lbNapr.Text = "Шарик движется влево с шагом " + shag;

       //   если шарик выходит за левую границу панели, то поднимаем флаг

                if (pictureBox1.Left - 7 <=0)

                    flag = true;                          

            }

           

         }