Форма

advertisement
Высокоуровневые методы
информатики и
программирования
Лекция 21
Элементы управления
План работы
• Базовый класс элементов управления –
Control
• Основные свойства и методы базового
класса
• Основные элементы управления
Элементы управления
(Controls)
• Классы производные от базового
класса System.Windows.Forms.Control.
• Наследуют всю функциональность
данного класса.
Типы элементов управления
• Визуальные элементы управления
(controls)
• Компоненты (components) – не
визуальные элементы управления
Некоторые базовые свойства класса
System.Windows.Forms.Control
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Handle – номер окна Windows
BackColor, ForeColor – фоновый цвет и цвет рисования
Left, Top, Right, Bottom – координаты точек диагонали
Height, Width – высота и ширина
Size – размер окна
ContextMenu – ссылка на контекстное меню
Cursor - ссылка на курсор
Name – имя элемента для работы системы разработки
Parent – ссылка на родительское окно
Text – заголовок
Font – используемый шрифт
Controls – список других элементов управления (если контейнер)
TabIndex – порядок перехода при нажатии клавиши Tab
Focused – имеет ли окно фокус ввода (get).
Anchor – связывание со сторонами родительской формы.
Dock – присоединение к сторонам родительской формы.
Размер окна
• Свойство Size – начальный размер окна.
• Свойство FormBorderStyle задает вид
рамки формы:
– Sizable – рамка с изменяющимся размером;
при изменении размера возникает событие
SizeChanged;
– FixedSingle
– Fixed3D
– FixedDialog
Свойство Anchor
• Задает стороны родительского окна с которыми ЭУ
связан. В этом случае, если родительское окно меняет
размеры, то расстояние от ЭУ до заданных сторон
родительской формы будет поддерживаться
постоянным (неизменным).
– Например, если задан ЭУ Button, который привязан к left и
right,
button1.Anchor = (AnchorStyles.Left | AnchorStyles.Right);
то при изменении размера формы ЭУ Buton изменяет свои
размеры так, чтобы сохранить расстояние до левой и правой
сторон формы.
• Если ЭУ не привязан к сторонам формы и размер
формы можно менять, положение ЭУ относительно
сторон формы меняется.
Свойство Dock
• Задание присоединения (dock) границ ЭУ к границам
родительского ЭУ и определения того, как ЭУ меняет
свои размеры при изменений размеров
родительского ЭУ.
• Свойства Anchor и Dock являются взаимно
исключающими. Только одно может быть задано для
ЭУ.
Некоторые основные методы класса
System.Windows.Forms.Control
•
•
•
•
Show() – показать окно на экране;
Hide() - спрятать окно (убрать с экрана);
OnEvent() – обработать заданное событие;
CreateGrafics() – создать элемент класса
Grafics для рисования в окне;
• Update() – обновить содержание окна;
• Invalidate() – объявить содержание окна
неправильным, что заставляет ОС отправить
событие WM_PAINT о необходимости
перерисовки содержания окна.
Группы элементов управления
•
•
•
•
Более 50 элементов управления (классов)
Стандартные элементы управления
Компоненты (не визуальные ЭУ)
Элементы управления для работы с меню и
инструментальными полосами
• Элементы управления для работы с принтером
• Общие диалоги
• Элементы управления для работы с базой данных
Использование элементов
управления
1. Включить в состав класса Form переменные
требуемых типов
2. Создать экземпляры классов элементов
управления
3. Задать их начальные свойства
4. Создать методы - обработчики событий
5. Связать эти методы с события элемента
управления
6. Добавить созданные объекты к коллекции
Controls
Иерархия классов – элементов
управления
Стандартные элементы управления –
Common Controls
•
•
•
•
•
•
•
•
•
•
•
•
Label (метки)
LinkLabel (метки)
Button (кнопки)
RadioButton (кнопки)
CheckBox (флажки)
CheckedListBox (флажки)
ListBox (флажки)
ListView (списки)
ComboBox (списки)
TextBox (текст)
RichTextBox (текст)
MaskedTextBox (текст)
•
•
•
•
•
•
•
•
•
NotifyIcon
NumericUpDown
PictureBox (графика)
ProgressBar
ToolTip
TreeView (дерево)
WebBrowser
DateTimePicker
MonthCalendar
Компоненты
• Элементы управления без визуального
интерфейса
• Timer
• FileSystemWatcher
• BackgroundWorker
• HelpProvider
• ImageList
• SerialPort
• ServiceController
Элементы управления для работы с
принтером - Printing
•
•
•
•
•
PrintDialog
PageSetupDialog
PrintDocument
PrintPreviewDialog
PrintPreviewControl
Автоматизация
программирования на основе
визуальных действий с
элементами управления
Инструменты
• Windows Forms Designer «Конструктор
форм Windows» - специальные подсистемы в
Visual Studio для работы с инструментами
визуальной разработки.
• Набор элементов управления (Toolbox)
• Форма – контейнер для размещения
элементов управления
• Окно Properties для работы со свойствами
элементов управления в режиме
проектирования (design mode)
Окно c набором элементов управления
«Tollbox»
• Содержит все элементы
управления, которые могут
быть размещены на форме
• Все элементы разделены на
группы
• Позволяет выбрать нужный
элемент управления и
перетащить его на форму
Просмотр свойств объекта
• Выделить элемент
(должны появиться
handles)
• Выделить элемент и
выбрать команду
Properties в
контекстном меню.
Окно свойств «Properties»
• Позволяет выбрать
свойство, посмотреть
значение и задать
новое значение.
События элемента в окне
свойств
• Выбрать событие
• Двойной щелчок на имени
события – создание пустого
обработчика событий со
стандартным именем.
• Задание имени и щелчок создание пустого обработчика
событий со стандартным
именем.
• Одинарный щелчок на имени
события – переход к
обработчику событий.
• Можно сменить имя
обработчика события
Работа дизайнеров
•
•
В Visual Studio имеется несколько визуальных проектировщиков форм
(visual forms designers)
Основные операции:
– «Перетащить и уронить» (“drag-and-drop”) на форме элемент управления
– Перемещение элементов управления на форме (перетащить) и выбор их
размеров
– Задание свойств элементов управления в окне Properties
– Назначение обработчиков событий для элементов управления
•
Дизайнеры предназначены для формирования частей программы на
основе интерпретации действий программиста с инструментами
– Добавление элемента управления на форму – вставка объекта
соответствующего класса в класс формы
– Размещение и изменение размеров – задание свойств созданных объектов
– Задание параметров элемента управления – присвоение значений
свойствам созданных объектов.
– Задание обработчиков событий для элементов управления – создание
методов для обработки событий и присвоение их соответствующим
делегатам классов элементов управления.
Разделение классов на части
• Для формы создаются 2 файла
– Form1.cs (в котором записываются обработчики событий, с
которыми работает программист)
– Form1.Designer.cs (часть класса производного от Form, с которой
работает программа-дизайнер, без необходимости не менять, но
нужно понимать, что в этом файле содержится)
• В этих файлах описывается один класс с ключевым словом
partial:
partial class Form1 { . . . }
• Файл Form1.Designer.cs хранит часть класса производного от
Form, с которой работает дизайнер.
• Файл Form1.cs хранит часть класса производного от Form, с
которой работает программист (обработка событий
элементов управления).
• Для просмотра кода из файла Form1.cs нужно выбрать в
контекстном меню команду “View Code”
• Кроме файлов формы создается файл Program.cs с методом
Main, в котором создается экземпляр нового класса форм и
показывается окно программы.
Окно управления решением
• В проект включены три
файла:
– Form1.cs
– Form1.Designer.cs
– Program.cs
«Windows Forms Designers поможет
только до определенного момента, а
потом вам придется писать код и,
возможно, разбираться в том, что
генерирует для вас Windows Forms
Designers»
Чарльз Петзольд
Описание отдельных типов
ЭУ
Класс меток - Label
• Предназначен для вывода текста на
форму
• Основные свойства
– Text
– Font
– ForeColor
Класс меток-ссылок LinkLable
• Свойство
–
–
–
–
–
–
–
–
LinkArea
Links
LinksData
bool LinkVisited
bool LinkVisited
LinkColor
VisitedLinkColor
ActiveLinkColor
• Событие
– LinkClicked
Наследование классов кнопок
Класс кнопок - Button
• Элемент для сообщения о щелчке
– Левая клавиша мыши
– Клавиша пробел на клавиатуре
• Основное событие:
– Click
Класс флажков - CheckBox
• состоит из маленького прямоугольника и
текстовой строки
• основные свойства
– bool Checked (get/set) – по умолчанию false
– bool AutoCheck (get/set) – по умолчанию true
– Appearance (get/set) – Normal, Button
• основное событие – изменение состояния
– CheckedChanged
Класс переключателей -RadioButton
• для выбора из группы опций
• Объединяются в группы (элемент
GroupBox) в которых выбран может
быть только один переключатель
• Основные свойства
– bool Checked (get/set)
– bool AutoCheck (get/set)
• Основное событие
– CheckedChanged (изменение состояния)
Порядок работы с переключателями
• Установить на форму элемент GroupBox и
задать Text
• Поместить в элемент GroupBox элементы
RadioButton
Текстовые поля - TextBox
• для ввода текста в программу
• основные свойства
–
–
–
–
–
string Text (get/set)
int MaxLength(get/set)
int TextLength (get)
string[] Lines (get/set)
bool Multiline (get/set) (по умолчанию false)
• основное событие
– TextChanged
• имеет smart tag (задать Multiline)
Пример текстового поля
• Другие свойства
– PasswordChar – задать заменитель для введенных
символов
– ReadOnly
– CharacterCasing (Normal – 0; Upper – 1; Lower - 2)
– Полосы прокрутки для (Multiline = true и
WordWrap=false)
Методы текстового поля
•
•
•
•
•
•
bool Modified (get/set)
void Undo()
void Сut()
void Copy()
void Paste()
void Clear()
Элемент RichTextBox
• Поддерживает форматированный текст (rich
text), в котором могут применяться разные
шрифты, цвета, отступы абзацев и
табуляция.
• Может импортировать и экспортировать текст
в формате RTF (Reach Text Format)
• Свойства
– string Rtf (get/set) задать или получить текст в
формате RTF
• Методы
– LoadFile
– SaveFile
Элемент MaskedTextBox
• Улучшенный элемент TextBox
• Свойство
– string Mask (get/set) – шаблон вводимых
данных
Описание элементов в шаблоне
Элемент
шаблона
Описание
0
Digit, required. This element will accept any single digit
between 0 and 9.
9
Digit or space, optional.
#
Digit or space, optional. If this position is blank in the mask,
it will be rendered as a space in the Text property. Plus (+)
and minus (-) signs are allowed.
L
Letter, required. Restricts input to the ASCII letters a-z and
A-Z. This mask element is equivalent to [a-zA-Z] in regular
expressions.
?
Letter, optional. Restricts input to the ASCII letters a-z and
A-Z. This mask element is equivalent to [a-zA-Z]? in
regular expressions.
…
Окно списков ListBox
• Часто используется в тех же целях, что и группа
переключателей (RadioButton) – чтобы пользователь
мог выбрать один элемент из нескольких.
• Занимает меньше место на форме и позволяет
выбирать несколько элементов.
• Имеет свойства
– Коллекция Items
• Items[индекс] (get/set)
• Items.Add(object), Remove(object), Clear(), Count
–
–
–
–
int SelectionMode (None -0; One – 1; MultipleSimple - 2)
bool Sorted (get/set)
int SelectedIndex = 0;
object SelectedItem (get/set)
Окно списков ListBox
• Примеры свойств:
– object SelectedItem тоже самое, что и
• object Items[lstbox.SelectedIndex]
– object SelectedValue – значение, связанное с выбранным элементом;
– string Text – текстовое значение выделенного элемента (если в классе
задан метод ToString - lstbox.SelectedItem.ToString())
– ListBox.SelectedIndexCollection SelectedIndexes (get)
– ListBox.SelectedObjectCollection SelectedItems (get)
• Методы:
– void SetSelected(int index, bool bSelect)
– bool GetSelected(int index)
– void ClearSelected()
• События
– SelectedIndexChanged - пользователь выбрал другое значение из
списка
Коллекция элементов ListBox
• Коллекция элементов Items
– Add (object o) – добавление элемента;
– Insert(int n, object o) - вставка элемента в заданное
место;
– RemoveAt (int n) – удаление элемента из
заданного места;
– Remove (object o) - удаление заданного объекта;
– Clear() – удалить все объекты
Связывание с источником
данных
•
•
•
•
DataSource = Book;
string DisplayMember = "Name";
string ValueMember = “Id";
SelectedIndex = 0;
Комбинированные окна ComboBox
• Текстовое поле + Окно списка
• Свойства:
– DropDownStyle
• Simple (0) – поле можно редактировать,
список всегда показывать
• DropDown (1) - поле можно
редактировать, список выпадает (по
умолчанию)
• DropDownList (2) - поле нельзя
редактировать, список выпадает
• Основные события:
– TextChanged – при каждом изменении текста в текстовом поле
– SelectedIndexChanged –выбор другого элемента
Элемент CheckedListBox
• Класс производный от класса ListBox
• string[] myFruit = {"Apples", "Oranges","Tomato"};
checkedListBox1.Items.AddRange(myFruit);
Класс PictureBox
• Вывод изображения в в окне
• Свойства
– Image – изображение (bmp, gif, jpg, wmf,
ico);
– ImageLocation – путь к файлу (метод Load)
– SizeMode – PictureBoxSizeMode (Normal,
StretchImage; AutoSize; CenterImage;
Zoom);
– BoderStyle
Элемент управления WebBrowser
• Показать web страницу на форме
• Свойства
– URL (get/set) – адрес страницы;
– Document (get) – получить HTMLDocument показанной webстраницы;
– string DocumentText (get/set) - содержание HTML страницы;
– string DocumentTitle (get) – получить заголовок страницы
• Методы
– void Navigate ( string urlString ) – загрузить и показать новую
страницу
– void GoHome () – перейти к странице по умолчанию
– bool GoBack () – перейти к предыдущей странице истории
– bool GoForward () – перейти к следующей странице истории
• Событие
– event WebBrowserDocumentCompletedEventHandler
DocumentCompleted – завершение загрузки документа
Элемент управления
ProgressBar
• Показывает ход выполнения долгой
операции
• Свойства
– Style
– Value
– Maximum
– Minimum
Элемент NumericUpDown
• для задания цифрового значения с помощью
мыши
• Свойства
–
–
–
–
decimal Minimum
decimal Maximum
decimal Value
decimal Increment
• Свойства
– event EventHandler ValueChanged
Подсказки - ToolTip
• Небольшое прямоугольное окно с пояснительными
текстом
• Нужно добавить к форме элемент ToolTip
• Для отображения надо
– В обработчике события Form1_Load для элементов
управления к которым нужно добавить пояснение вызвать
метод
• void SetToolTip(Control cntl, string strTip)
– Или в свойствах элементов формы задать текст
• Для удаления подсказки вызвать метод
void SetToolTip(Control cntl, null)
Элементы управления
DataTimePicker и MonthCalendar
• MonthCalendar – выбор даты или
интервала дат
– Событие DateChanged (параметр DateRangeEventArgs е.Start и e.End)
• DataTimePicker – для выбора
одной даты (Value)
• или одного значения времени
(ShowUpDown – true; Format Time)
Класс таймер - Timer
• Инициирует события через заданные
интервалы времени
• Свойства
– int Interval (миллисекунды)
– bool Enabled
• Методы
– void Start () – начать работу
– void Stop () – закончить работу
• Событие
– event EventHandler Tick
Контейнеры
•
•
•
•
•
GroupBox – группа элементов
Panel – панель с элементами
SplitContainer – разделяемый контейнер
TabControl – панели с закладками
TableLayoutPanel – табличная разметка
Download