Similar presentations:
Взаимодействие с элементами управления. Модуль 2 (4 пары)
1. Взаимодействие с элементами управления
Модуль 2 (4 пары)2. Статический текст. Класс TextBox
2Статический текст. Класс TextBox
• Свойство ReadOnly получает или задает значение,
указывающее, является ли текст в текстовом поле доступным
только для чтения.
public bool ReadOnly { get; set; }
• Группа методов для работы с буфером обмена: метод Cut
(вырезает выделенный текст в буфер обмена), Copy (копирует
выделенный текст в буфер обмена), Paste (вставляет
содержимое буфера обмена на место выделенного текста), Undo
(если свойство CanUndo возвращает значение true, этот метод
отменяет последнюю операцию с буфером обмена или
изменения текста, выполненную в элементе управления
«Текстовое поле». Метод Undo не работает с событиями
KeyPress и TextChanged).
public void Cut()
public void Copy()
public void Paste()
public void Undo()
• С остальными свойствами и методами класса TextBox вы
можете более подробно ознакомиться в MSDN.
3. Текстовое поле. Класс TextBox
3Текстовое поле. Класс TextBox
• Типичный внешний вид:
• В рамках .Net Framework cуществует несколько классов
текстовых полей. Базовым классом для текстовых полей
является класс TextBoxBase. Как видно из диаграммы от него
наследуются три вида текстовых полей.
System.Windows.Forms.TextBoxBase
System.Windows.Forms.TextBox
System.Windows.Forms.MaskedTextBox
System.Windows.Forms.RichTextBox
• Обычное текстовое поле представлено классом TextBox, класс
MaskedTextBox является усовершенствованной версией
элемента управления TextBox, которая поддерживает
декларативный синтаксис, на основе которого принимаются
или отклоняются данные, вводимые пользователем, и наконец,
класс RichTextBox представляет расширенное текстовое поле.
Принципы создания текстового поля такие же, как и у надписи
(то есть использование дизайнера или создание программно).
4. Кнопки
4Кнопки
• Как вы уже знаете, существуют три основных вида кнопок:
обычные кнопки, радиокнопки, чекбоксы. Напомним вам их
внешний вид.
Обычная кнопка:
Радиокнопка
Чекбокс
• Базовым классом для кнопок является класс ButtonBase. Он
наследуется от класса Control. Остальные кнопочные классы
наследуются от класса ButtonBase.
System.Windows.Forms.ButtonBase
System.Windows.Forms.Button
System.Windows.Forms.CheckBox
System.Windows.Forms.RadioButton
• Как можно легко догадаться класс Button отвечает за обычную
кнопку, класс CheckBox за чекбокс, класс RadioButton за
радиокнопку. Принципы создания кнопок такие же, как и у
текстовых полей, надписей и других элементов управления.
5. Кнопки
5Кнопки
• Рассмотрим некоторые свойства класса CheckBox.
• Свойство
Checked
получает
или
задает
значение,
определяющее, находится ли CheckBox в выбранном
состоянии.
public bool Checked { get; set; }
• Свойство CheckState возвращает или устанавливает состояние
чекбокса.
public CheckState CheckState { get; set; }
• CheckState — это перечисление, которое может принимать
следующие значения:
Unchecked — элемент управления снят (не отмечен).
Checked — элемент управления установлен (отмечен).
Indeterminate — элемент управления находится в
неопределенном
состоянии.
Элемент
управления
в
неопределенном состоянии обычно затенен (недоступен).
6. Кнопки
6Кнопки
Свойство ThreeState получает или задает значение,
определяющее, будут разрешены CheckBox три состояния
или два.
public bool ThreeState { get; set; }
Значением будет true, если флажок CheckBox может
отображать три состояния; в противном случае — false.
Значение по умолчанию — false.
С остальными свойствами и методами классов CheckBox,
Button, RadioButton вы можете более подробно
ознакомиться в MSDN.
7. Элементы управления «Дата-Время» и «Календарь»
7Элементы управления «Дата-Время» и «Календарь»
• Напоследок поговорим немного об уже известных вам
элементах управления «Дата-Время» и «Календарь». Начнем с
внешнего вида.
13 октября 2009 г.
• «Дата-Время»:
«Календарь»:
• За элемент «Дата-Время» отвечает класс DateTimePicker. За
элемент «Календарь» отвечает класс MonthCalendar.
Рассмотрим некоторые свойства класса DateTimePicker.
• Свойство Format возвращает или задает формат даты и
времени, отображаемых в элементе управления.
public DateTimePickerFormat Format { get; set; }
8. Элементы управления «Дата-Время» и «Календарь»
8Элементы управления «Дата-Время» и «Календарь»
• Возможные значения для перечисления DateTimePicker
Format.
Long — элемент управления DateTimePicker отображает
значение даты/времени в длинном формате даты,
настроенном в операционной системе пользователя.
Short — элемент управления DateTimePicker отображает
значение даты/времени в коротком формате даты,
настроенном в операционной системе пользователя.
Time — элемент управления DateTimePicker отображает
значение даты/времени в формате времени, настроенном в
операционной системе пользователя.
Custom — элемент управления DateTimePicker отображает
значение даты/времени в пользовательском формате.
• Свойство ShowCheckBox возвращает или задает значение,
указывающее на то отображать чекбокс для выбора значения
или нет.
public bool ShowCheckBox { get; set; }
9. Элементы управления «Дата-Время» и «Календарь»
9Элементы управления «Дата-Время» и «Календарь»
• Свойство ShowUpDown возвращает или
указывающее на то отображать ли спин.
задает
значение,
public bool ShowUpDown { get; set; }
• Свойства MaxDate, MinDate возвращают или задают значение
для максимальной и минимальной даты вводимой в элемент
управления.
public DateTime MaxDate { get; set; }
public DateTime MinDate { get; set; }
• Значение, введенное в элемент управления можно получить через
свойство Value.
public DateTime Value { get; set; }
• Рассмотрим некоторые свойства класса MonthCalendar. Начнем
со свойств MaxDate, MinDate, которые возвращают или задают
значение для максимальной и минимальной даты выбираемой в
календаре.
public DateTime MaxDate { get; set; }
public DateTime MinDate { get; set; }
10.
10• Свойство ShowToday получает или задает значение,
показывающее, отображается ли дата, представляемая
свойством TodayDate, в нижней части элемента управления.
public bool ShowToday { get; set; }
• Свойство ShowTodayCircle получает или задает значение,
показывающее, обозначается ли сегодняшняя дата кружком
или квадратом.
public bool ShowTodayCircle { get; set; }
• Свойство ShowWeekNumbers получает или задает значение,
показывающее, будет ли элемент управления «Календарь на
месяц» отображать номера недель (1–52) слева от каждой
строки дней.
public bool ShowWeekNumbers { get; set; }
• Свойство TodayDate получает или задает значение,
используемое элементом управления MonthCalendar в
качестве сегодняшней.
public bool DateTime TodayDate { get; set; }
• С
остальными
свойствами
и
методами
классов
DateTimePicker, MonthCalendar вы можете более подробно
ознакомиться в MSDN.
11. Использование таймера
11Использование таймера
• Понятие таймера вам уже известно из курса WinAPI. В .Net
Framework существует несколько видов таймера. Сегодня мы
разберем
таймер,
находящийся
в
пространстве
System.Windows.Forms,
предназначенный
для
использования в WinForms приложениях.
• Рассмотрим иерархию наследования
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Timer
• Из диаграммы можно сделать вывод, что класс не является
потомком класса Control и это вполне естественно, так как
таймер не является окном или элементом управления.
12. Использование таймера
12Использование таймера
Для запуска таймера необходимо:
1. Создать объект класса Timer. Конструктор класса Timer не
получает параметров.
2. Установить временной интервал для срабатывания
таймера. Для этого используется свойство Interval класса
Timer. Значение интервала указывается в миллисекундах.
3. Закрепить обработчик на событие Tick класса Timer.
4. Запустить таймер с помощью вызова метода Start класса
Timer или свойства Enabled того же класса
5. Для остановки таймера необходимо использовать метод
Stop класса Timer.
13. Использование таймера
13Использование таймера
• Рассмотрим практический пример реализации таймера. В
данном проекте пользователь имеет возможность установить
таймер на указанное количество секунд, стартовать таймер,
остановить таймер.
• Внешний вид приложения:
public partial class Form1 : Form
{ Timer vTimer = new Timer();
public Form1()
{ InitializeComponent(); button2.Enabled = false;
//определяем обработчик события для таймера
vTimer.Tick += new EventHandler(ShowTimer);
}
private void ShowTimer(object vObject, EventArgs e)
{//останавливаем таймер
vTimer.Stop();
button2.Enabled = false;
MessageBox.Show("Таймер отработал!","Таймер");
}
private void button1_Click(object sender, EventArgs e)
{//проверяем введенное количество секунд для таймера
if (numSeconds.Value <= 0)
{
MessageBox.Show("Количество секунд должно быть больше
0!"); return;
}
//разрешаем прервать таймер
button2.Enabled = true;
//интервал задается в милисекундах,
// поэтому секунды умножаем на 1000
//и задаем интервал таймера
vTimer.Interval = Decimal.
ToInt32(numSeconds.Value) * 1000;
//запуск таймера vTimer.Start();
}
private void button2_Click(object sender,
EventArgs e)
{
//останавливаем таймер vTimer.Stop();
MessageBox.Show("Таймер не успел отработат
"Таймер"); button2.Enabled = false;
}
}
14. Принципы работы со временем и датой
14Принципы работы со временем и датой
• Для работы со временем и датой в .Net Framework
используются структуры DateTime и TimeSpan. DateTime
используется для представления даты и времени, а TimeSpan
для представления временного промежутка.
• Рассмотрим некоторые поля и методы структуры DateTime.
• Конструктор класса существует в большом количестве
перегрузок. Рассмотрим несколько из них.
public DateTime(
int year,
int month,
int day
)
public DateTime(
int year,
int month,
int day,
int hour,
int minute,
int second,
int millisecond
)
Проанализируем параметры:
year — год (от 1 до 9999),
month — месяц (от 1 до 12),
day — день (от 1 до количества дней в
month),
hour — часы (от 0 до 23),
minute — минуты (от 0 до 59),
second — секунды (от 0 до 59),
millisecond — миллисекунды (от 0 до
999).
15. Принципы работы со временем и датой
15Принципы работы со временем и датой
• Для получения текущей даты и времени данного компьютера,
выраженного как местное время, используется статическое
свойство Now.
public static DateTime Now { get; }
• Для получения только текущей даты используется свойство
Today. Временная составляющая будет равняться 00:00:00
public static DateTime Today { get; }
• Для преобразования DateTime встрокуиспользуется группа
методов ToТипПреобразованияString (ToLongDateString,
ToLongTimeString,
ToShortDateString,
ToShortTimeString), а также уже известный вам метод
ToString.
16. Принципы работы со временем и датой
16Принципы работы со временем и датой
• Рассмотрим в качестве примера метод ToLongTimeString. Он
преобразует значение текущего объекта DateTime в
эквивалентное ему длинное строковое представление времени.
public string ToLongTimeString()
• Поотношению кобъекту типа DateTime можно применять
перегруженные операторы, такие как +,–,==,<,>,<=,>=,!=
• Рассмотрим перегрузку + и –
public static DateTime operator +(
DateTime d,
TimeSpan t
)
public static TimeSpan operator -(
DateTime d1,
DateTime d2
)
public static DateTime operator -(
DateTime d,
TimeSpan t
)
17. Принципы работы со временем и датой
17Принципы работы со временем и датой
• В перегруженный оператор + передаётся два аргумента:
• d — объект, содержащий время и дату,
• t — объект, содержащий временной промежуток (например 3
часа 12 минут). Из оператора возвращается объект DateTime
содержащий результат сложения.
• В перегруженный оператор — передаётся два аргумента:
• d1 — объект, содержащий время и дату,
• d2 — второй объект, содержащий время и дату. Из оператора
возвращается объект TimeSpan, содержащий временной
промежуток — результат вычитания двух дат.
• Второй вариант перегрузки получает два аргумента:
• d — объект, содержащий время и дату,
• t — объект, содержащий временной промежуток (например 3
часа 12 минут).
• Из оператора возвращается объект DateTime содержащий
результат вычитания.
18.
18• Перейдем к рассмотрению структуры TimeSpan.
• У
TimeSpan
существует
несколько
перегруженных
конструкторов. Проведем анализ нескольких перегрузок.
public TimeSpan(
int hours,
int minutes,
int seconds
)
public TimeSpan(
int days,
int hours,
int minutes,
int seconds
)
public TimeSpan(
int days,
int hours,
int minutes,
int seconds,
int milliseconds
)
• Ничего особенно сложного в данных перегруженных
конструкторах нет. Передаются часы, минуты, секунды и
миллисекунды, то есть самые обычные характеристики для
задания временного промежутка.
19. Принципы работы со временем и датой
19Принципы работы со временем и датой
• Свойства Days, Hours, Minutes, Seconds, Milliseconds
используются для получения соответственно дневной, часовой,
минутной, секундной и миллисекундой составляющей TimeSpan.
• Для TimeSpan существует набор перегруженных операторов, как
и для DateTime. Возьмем например оператор +.
public static TimeSpan operator +(
TimeSpan t1,
TimeSpan t2
)
• В данный оператор передаются два аргумента, представляющих
временные промежутки. Из оператора возвращается результат
сложения двух промежутков.
• Более подробную информацию о DateTime и TimeSpan
смотрите в MSDN.
20. Пример
20Пример
• Рассмотрим практический пример, показывающий принципы
использования механизмов DateTime и таймера. Цель примера
— отображение текущего время.
• Внешний вид приложения:
public partial class Form1 : Form
{ // создаём таймер
private static Timer vTimer = new Timer();
// Обработчик тика для таймера
private void ShowTime(object vObj, EventArgs e)
{ // преобразование к строке
labelTime.Text =
DateTime.Now.ToLongTimeString();
}
public Form1()
{ InitializeComponent();
// преобразование к строке
labelTime.Text =
DateTime.Now.ToLongTimeString();
// закрепление обработчика
vTimer.Tick += new EventHandler(ShowTime);
// установка интервала времени
vTimer.Interval = 500;
// стартуем таймер
vTimer.Start();
}