- •Лабораторная работа №1 Использование встроенных функций компонента «Художник»
- •Краткая теория
- •Порядок выполнения
- •Задание
- •Контрольные вопросы
- •Лабораторная работа №2 Пользовательские функции
- •Краткая теория
- •Порядок выполнения
- •Задание
- •Контрольные вопросы
- •Лабораторная работа №3 События
- •Краткая теория
- •Порядок выполнения
- •Задание
- •Контрольные вопросы
- •Лабораторная работа №4 Работа с таймером
- •Краткая теория
- •Порядок выполнения
- •Задание
- •Контрольные вопросы
- •Лабораторная работа №5 Массивы
- •Кратная теория
- •Порядок выполнения
- •Задание
Порядок выполнения
C помощью данных методических указаний научиться писать и вызывать пользовательские функции;
Написать программу согласно заданию;
Оформить отчет.
Задание
Используя событие нажатия клавиши необходимо вывести число (приведенное в задании к лабораторной работе №2) согласно своему варианту.
Под числом, используя то же событие, вывести собственную фамилию.
Контрольные вопросы
Что такое делегат? Опишите сигнатуру определения делегата.
Для каких целей в программе могут применяться делегаты?
Напишите синтаксис добавления и удаления метода в список делегата.
В каком случае можно говорить о том, что два делегата равны?
Объясните процесс асинхронного вызова делегата.
Что такое событие? Как в языке C# добавить к элементу обработчик события?
Напишите на языке C# программу, которая, при нажатии клавиши «пробел», выводила каждую букву Вашей фамилии с интервалом в 2 секунды.
При стандартном вызове события элемента используются функции с аргументами sender и e. За что отвечают каждый из этих аргументов?
Для каких целей в языке C# применяется ключевое слово lock?
Опишите сигнатуру использования ключевого слова lock.
Лабораторная работа №4 Работа с таймером
Цель работы: изучить работу и принцип действия таймеров в языке C#.
Оборудование: персональный компьютер, Microsoft Visual Studio 2010.
Краткая теория
Таймеры являются простыми объектами, позволяющие указывать время и интервал вызова функции. Для работы с таймерами в C# необходимо подключить пространство имен System.Timers:
using System.Windows.Forms;
Для создания таймера необходимо вызвать конструктор по умолчанию с типом Timer. Например:
Timer myTimer = new Timer();
После создания таймера необходимо его настроить и запустить. При настройке таймера необходимо:
для события myTimer.Tick необходимо задать функцию обработки события, истечения времени работы таймера. Данная функция будет вызываться в момент, когда заданный интервал времени будет окончен. После вызова функции – таймер снова будет начинать свой отсчет;
для свойства myTimer.Interval возвращает или задает время в миллисекундах до вызова события myTimer.Tick;
вызвать метод myTimer.Start(), запускающий таймер.
В случаи, если необходимо остановить таймер, необходимо вызвать либо метод myTimer.Stop() либо myTimer.Dispose().
В следующем коротком примере показана работа с таймером. Для начала создаются две функции, рисующих символы «0» и «1», num0 и num1. Затем внутри класса Form1 создается закрытое статическое поле с типом Timer и открытое поле с типом int, которое будет сохранять количество вызовов таймера:
static Timer myTimer = new Timer();
public static int count = 0;
Затем создается метод SomeFunc, который будет вызываться в момент наступления события myTimer.Tick. Она работает следующим образом:
Проверяется значение внутреннего поля count, если оно меньше 10, то вызывается соответствующая функция рисования символа;
Внутри этого условия проверяется ещё одно: если значение количества вызовов четное, то вызывается функция рисования символа «1», если нет – символа «0»;
Если значение поля count равно 10, то его значение сбрасывается в ноль и курсор сдвигается вниз и влево.
Public void SomeFunc()
{
if (count < 10)
{
if (count % 2 == 0)
num0();
else
num1();
count++;
}
else
{
count = 0;
Paper.PenMove(-80, 20);
}
}
Далее создается метод, который будет вызывать метод SomeFunc() в момент запуска таймера:
private void TimerEventProcessor(object sender, EventArgs e)
{
SomeFunc();
}
В конце, создается обработчик события загрузки компонента ePaper, внутри которого настраивается и запускается таймер:
private void Paper_Load(object sender, EventArgs e)
{
myTimer.Tick += new EventHandler(TimerEventProcessor);
myTimer.Interval = 1000;
myTimer.Start();
}
Окончательный вариант листинга работы с таймером:
public partial class Form1 : Form
{
static Timer myTimer = new Timer();
public static int count = 0;
public void SomeFunc()
{
if (count < 10)
{
if (count % 2 == 0)
num0();
else
num1();
count++;
}
else
{
count = 0;
Paper.PenMove(-80, 20);
}
}
public Form1()
{
InitializeComponent();
Paper.PaperColor = Color.White;
Paper.PenColor = Color.Brown;
Paper.PenMove(20, 20);
}
private void TimerEventProcessor(object sender, EventArgs e)
{
SomeFunc();
}
private void Paper_Load(object sender, EventArgs e)
{
myTimer.Tick += new EventHandler(TimerEventProcessor);
myTimer.Interval = 1000;
myTimer.Start();
}
}
}
Результат работы программы изображен на рисунке 13.
Рисунок 13 – Результат работы таймера
