Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Благодарности 13 страница






При создании элемента управления TrackBar приложение должно определить диапазон значений, соответствующих положению движка, шаг делений, а также шаг изменения этих значений.

Создание элемента управления TrackBar

Для демонстрации возможностей элемента управления TrackBar мы подготовили приложение TrackBarApp, главное окно которого показано на рис. 6-16.

Рис. 6-16. Элемент управления TrackBar

В этом окне всего два элемента управления — текстовое поле Label и элемент управления TrackBar. Последний из них позволяет регулировать значение, отображаемое в текстовом поле. Диапазон регулировки — от 0 до 100. При использовании клавиш перемещения курсора значение регулируется с дискретностью 1, а при использовании клавиш PgUp и PgDn — с дискретностью 5.

При визуальном проектировании приложения Вам нужно перетащить значок элемента управления TrackBar из инструментальной панели Microsoft Visual Studio.NET в окно формы. При этом мастер формы создаст для Вас весь необходимый программный код.

Элемент управления TrackBar создается как объект класса System.Windows.Forms.TrackBar:

this.trackBar1 = new System.Windows.Forms.TrackBar();

Свойства элемента управления TrackBar

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

this.trackBar1.Location = new System.Drawing.Point(40, 104);
this.trackBar1.Maximum = 100;
this.trackBar1.Name = " trackBar1";
this.trackBar1.Size = new System.Drawing.Size(224, 42);
this.trackBar1.TabIndex = 0;
this.trackBar1.TickFrequency = 5;
this.trackBar1.Scroll +=
new System.EventHandler(this.trackBar1_Scroll);

Этот обработчик будет получать управление при изменении положения движка в окне элемента управления TrackBar.

Рассмотрим самые важные свойства регулятора TrackBar.

Свойство Value хранит текущее значение, непосредственно связанное с положением движка в окне регулятора. Программа может не только читать это свойство, но и писать в него. При этом положение движка будет изменяться соответствующим образом.

Свойства Minimum и Maximum определяют, соответственно, минимальное и максимальное значение, связанное с движком. По умолчанию минимальное значение равно 1, а максимальное — 10. В нашем приложении TrackBarApp мы увеличили максимальное значение, записав в свойство Maximum число 100.

Дискретность изменения значения при использовании клавиш перемещения курсора задается свойством SmallChange. По умолчанию она равна 1, и мы не стали менять это значение.

Что же касается дискретности при использовании клавиш PgUp и PgDn, то ее можно задать с помощью свойства LargeChange. По умолчанию значение этого свойства равно 5.

Чтобы задать количество штрихов, отображаемых на шкале элемента управления TrackBar, нужно отредактировать свойство TickFrequency. В приложении TrackBarApp мы присвоили этому свойству значение 5.

Изменяя свойство Orientation, можно задать горизонтальное или вертикальное (рис. 6-17) расположение окна элемента управления TrackBar. В первом случае свойство должно содержать значение System.Windows.Forms.Orientation.Horizontal, а во втором — System.Windows.Forms.Orientation.Vertical.

Рис. 6-17. Вертикальное расположение элемента управления TrackBar

Свойство TickStyle задает стиль шкалы и ползунка. Вот возможные значения:

 None;

 TopLeft;

 BottomRight;

 Both.

В первом случае, при использовании значения None, штрихи не отображаются на шкале. Остальные константы позволяют задать расположение штрихов сверху или снизу (справа или слева) от движка, а также по обе стороны движка (значение Both).

Обработка события Scroll

Когда пользователь перемещает движок, элемент управления TrackBar создает событие Scroll. Обработчик этого события может получить текущее значение, связанное с движком, извлекая его из свойства Value.

В приложении TrackBarApp мы извлекаем это значение, преобразуем его в текст с помощью метода ToString, а затем отображаем в текстовом поле:

private void trackBar1_Scroll(object sender, System.EventArgs e)
{
label1.Text = trackBar1.Value.ToString();
}

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

В то время как элемент управления TrackBar предназначен для регулирования каких-либо числовых значений, элемент управления ProgressBar поможет Вам графически отобразить значения. Он часто применяется, например, для отображения процента завершения какого-либо длительного процесса.

На рис. 6-18 мы показали окно приложения TrackBarApp, в которое добавили TrackBar, перетащив значок этого элемента управления в окно формы из инструментальной панели Toolbar.

Рис. 6-18. Добавлен элемент управления ProgressBar

В приложении TrackBarApp мы использовали элемент управления ProgressBar для графического отображения текущего уровня мощности, установленного при помощи ползунка.

Элемент управления ProgressBar создается при помощи конструктора как объект класса System.Windows.Forms.ProgressBar:

this.progressBar1 = new System.Windows.Forms.ProgressBar();

Когда Вы добавляете ProgressBar в окно формы, дизайнер форм автоматически добавляет код настройки свойств этого элемента управления:

this.progressBar1.Location = new System.Drawing.Point(24, 64);
this.progressBar1.Name = " progressBar1";
this.progressBar1.Size = new System.Drawing.Size(224, 23);
this.progressBar1.TabIndex = 2;

Рассмотрим наиболее интересные свойства элемента управления ProgressBar.

Прежде всего, Ваша программа будет использовать свойство Value, устанавливающее текущее значение, связанное с элементом управления ProgressBar. Именно это значение определяет размер закрашенной области окна ProgressBar.

Текущее значение должно находиться в границах, задаваемых при помощи свойств Minimum и Maximum. Первое из них определяет минимально возможное значение, отображаемое при помощи ProgressBar, а второе — максимально возможное значение. По умолчанию ProgressBar отображает значения в диапазоне от 0 до 100.

При инициализации наше приложение TrackBarApp устанавливает начальную позицию элементов управления TrackBar и ProgressBar, используя для этого свойство Value:

trackBar1.Value = 37;
label1.Text = trackBar1.Value.ToString();
progressBar1.Value = trackBar1.Value;

Новый обработчик сообщения trackBar1_Scroll отображает численное значение мощности в текстовом поле label1, а также устанавливает новую позицию элемента управления progressBar1:

private void trackBar1_Scroll(object sender, System.EventArgs e)
{
label1.Text = trackBar1.Value.ToString();
progressBar1.Value = trackBar1.Value;
}

С помощью методов Increment и PeformStep программа может увеличивать текущую позицию элемента управления ProgressBar. Эти методы удобно использовать в цикле. Метод Increment увеличивает позицию на величину, передаваемую этому методу через единственный параметр. Что же касается метода PeformStep, то он увеличивает значение на шаг, заданный при помощи свойства Step.

При необходимости заблокировать ProgressBar Ваша программа может записать в свойство Enabled значение false.

Полосы прокрутки HScrollBar и VScrollBar

Элементы управления HScrollBar и VScrollBar представляют собой обычные полосы прокрутки, отображаемые на границах окон редактирования и просмотра приложений Microsoft Windows. Эти элементы управления, показанные на рис. 6-19, могут также использоваться и для регулировки числовых значений, хотя для этого лучше применять только что описанный элемент управления TrackBar.

Рис. 6-19. Элементы управления HScrollBar и VScrollBar

Окно элемента управления HScrollBar располагается горизонтально, а элемента управления VScrollBar — вертикально.

Надо отметить, что элементы управления HScrollBar и VScrollBar редко используются сами по себе. Как правило, они используются в более сложных составных элементах управления, таких, например, как редакторы текста, списки и панели класса Panel. Когда содержимое не помещается в окне такого элемента, в его окне автоматически создаются полосы прокрутки. Настраивая свойства составных элементов управления соответствующим образом, можно установить режим, при котором полосы прокрутки отображаются постоянно, не зависимо от содержимого окна просмотра или редактирования.

Свойства элементов управления HScrollBar и VScrollBar аналогичны свойствам регулятора TrackBar.

Свойство Value хранит текущее значение, непосредственно связанное с положением движка в окне полосы прокрутки. При изменении значения свойства положение движка в окне полосы прокрутки будет изменяться соответствующим образом.

Свойства Minimum и Maximum определяют, соответственно, минимальное и максимальное значение, связанное с движком полосы прокрутки. По умолчанию минимальное значение равно 1, а максимальное — 100.

Дискретность изменения значения при использовании клавиш перемещения курсора задается свойством SmallChange. По умолчанию она равна 1. Дискретность при использовании клавиш PgUp и PgDn задается с помощью свойства LargeChange и равна по умолчанию 10.

Календарь

В разделе «Создание модальных окон» 5 главы мы создавали диалоговое окно регистрации программы, в котором использовали очень мощное и удобное средство работы с датами — календарь MonthCalendar. Элементы управления MonthCalendar и DateTimePicker пригодятся Вам в любом приложении, требующем от пользователя ввода дат, диапазонов дат и времени.

В этом разделе мы будем показывать возможности элементов управления MonthCalendar и DateTimePicker на примере приложения DateTimeApp. Исходный вид главного окна этого приложения, в котором находится только один элемент управления MonthCalendar, мы показали на рис. 6-20.

Рис. 6-20. Календарь на один месяц

Создание календаря

Самый простой способ создать календарь — это переместить его значок MonthCalendar из панели Toolbox в окно проектируемой формы. При этом с исходный текст приложения будет добавлен следующий код:

private System.Windows.Forms.MonthCalendar monthCalendar1;

this.monthCalendar1 = new System.Windows.Forms.MonthCalendar();

//
// monthCalendar1
//
this.monthCalendar1.Location = new System.Drawing.Point(24, 16);
this.monthCalendar1.Name = " monthCalendar1";
this.monthCalendar1.TabIndex = 1;

Как видите, календарь создается с помощью конструктора на базе класса System.Windows.Forms.MonthCalendar.

Настройка свойств

Программный код инициализации, добавленный дизайнером форм, по умолчанию устанавливает расположение календаря Location, его имя Name, а также порядок сортировки TabIndex. Далее Вам нужно самостоятельно настроить свойства календаря для получения от него необходимой функциональности.

Прежде всего, расскажем о свойствах, определяющих внешний вид календаря.

Свойства CalendarDimensions.Width и CalendarDimensions.Height задают, соответственно, ширину и высоту календаря. По умолчанию значения этих свойств равны 1, в результате чего календарь отображает числа только одного месяца (рис. 6-20).

Задав значение свойства CalendarDimensions.Width равное 3, а свойства CalendarDimensions.Height — равное 2, можно создать календарь на 6 месяцев (рис. 6‑ 21).

Рис. 6-21. Календарь на полгода

По умолчанию в календаре отмечена текущая дата, а в нижней части календаря присутствует строка Сегодня: ХХ.ХХ.ХХХХ. Однако если записать значение false в свойство ShowToday, эта строка не будет отображаться. Если при этом записать значение false в свойство ShowTodayCircle, текущая дата никак не будет отмечена в календаре.

Если записать в свойство TodayDateSelect значение true, программа сможет выбирать текущую дату, записывая ее в свойство TodayDate (по умолчанию свойство TodayDate содержит системную дату).

При необходимости можно показывать в календаре номера недель, записав значение true в свойство ShowWeekNumbers.

С помощью календаря пользователь может указать дату или диапазон дат, выделив этот диапазон левой клавишей мыши. Максимальный диапазон дат, который может выделить пользователь, задается свойством MaxSelectionCount, значение которого по умолчанию равно 7.

Если значение свойства MaxSelectionCount установить равным 1, то пользователь сможет выбрать только один день. Если же значение этого свойства увеличить до 365, можно будет выбрать максимальный интервал дат, равный 1 году. На рис. 6-22 мы выделили диапазон дат, равный 4 месяцам.

Рис. 6-22. Выделен диапазон дат, равный 4 месяцам

Свойства SelectionStart и SelectionEnd содержат, соответственно, начальную и конечную дату из диапазона дат, выделенных пользователем. Кроме того, диапазон выделенных дат можно получить из свойства SelectionRange.

Если значение свойства MaxSelectionCount равно 1 и пользователь может выделить только один день, то дату, соответствующую этому дню, можно извлечь из свойства SelectionStart.

Что касается свойств SelectionStart и SelectionEnd, то в них хранится дата в виде объектов класса DateTime. В табл. 6-1 мы перечислили некоторые свойства этого класса.

Таблица 6-1. Свойства класса DateTime

Свойство Что содержит
Day Число
Mouhth Номер месяца
Year Год
Millisecond Миллисекунды
Second Секунды
Minute Минуты
Hour Часы
DayOfWeek Номер дня в неделе
DayOfYear Номер дня в году
Ticks Количество периодов системного таймера
TimeOfDay Время дня
Today Текущая дата
UtcNow Текущая локальная дата в терминах универсального координированного времени (coordinated universal time, UTC)

Ранее в разделе «Создание модальных окон» 5 главы мы уже пользовались свойством SelectionStart, извлекая из него отдельные компоненты даты:

public string UserBirthDay
{
get
{
DateTime dt = monthCalendar1.SelectionStart;
return dt.Day + "." + dt.Month + "." + dt.Year;
}
}

Здесь мы вначале получили из свойства monthCalendar1.SelectionStart дату, выделенную пользователем, и сохранили ее в переменной dt типа DateTime. Далее из отдельных компонентов даты (календарного числа dt.Day, номера месяца dt.Month и года dt.Year) была сформирована текстовая строка.

Аналогичным образом программа может обработать и содержимое свойства SelectionEnd.

Свойство SelectionRange содержит данные класса SelectionRange. Чтобы извлечь начальную и конечную дату, программа должна обратиться к свойствам SelectionRange.Start и SelectionRange.End, соответственно.

Дополните приложение DateTimeApp обработчиком события button1_Click, получающим управление по щелчку кнопки OK:

private void button1_Click(object sender, System.EventArgs e)
{
string s = " Выбран диапазон дат: ";
DateTime dtStart = monthCalendar1.SelectionRange.Start;
DateTime dtEnd = monthCalendar1.SelectionRange.End;

s += " (" +
dtStart.Day + "." + dtStart.Month + "." + dtStart.Year +
") - (" +
dtEnd.Day + "." + dtEnd.Month + "." + dtEnd.Year + ")";

MessageBox.Show(s);
}

Здесь мы извлекаем начальную и конечную дату, а затем отображаем на экране текстовую строку с диапазоном дат, выделенным пользователем в окне календаря (рис. 6-23).

Рис. 6-23. Отображение выделенного диапазона дат

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

Если календарь MonthCalendar смотрится в окне формы слишком громоздко, для ввода даты и времени можно использовать более компактные элементы управления класса DateTimePicker.

Создание элемента управления DateTimePicker

Перетащите из инструментальной панели Microsoft Visual Studio.NET значки элемента управления DateTimePicker и разместите их в окне приложения DateTimeApp, как это показано на рис. 6-24.

Рис. 6-24. Использование элемента управления DateTimePicker

Элемент управления DateTimePicker создается с помощью конструктора как объект класса System.Windows.Forms.DateTimePicker:

private System.Windows.Forms.DateTimePicker dateTimePicker1;

this.dateTimePicker1 = new System.Windows.Forms.DateTimePicker();

this.dateTimePicker1.Location = new System.Drawing.Point(240, 16);
this.dateTimePicker1.Name = " dateTimePicker1";
this.dateTimePicker1.Size = new System.Drawing.Size(136, 20);
this.dateTimePicker1.TabIndex = 3;

Настройка свойств

Внешний вид окна элемента управления DateTimePicker определяется свойством Format, которое может иметь несколько значений:

 Long;

 Short;

 Time;

 Custom

Значение Long используется по умолчанию. В этом случае окно элемента управления DateTimePicker содержит поля для ввода числа, месяца и года, а также кнопку со стрелкой. На рис. 6-24 такой элемент управления показан справа вверху.

Пользователь может вводить компоненты даты, непосредственно редактируя их при помощи клавиатуры, увеличивать или уменьшать эти компоненты при помощи клавиш перемещения курсора, а также с помощью кнопки со стрелкой. В последнем случае рядом с окном элемента управления DateTimePicker появится уже знакомый Вам календарь (рис. 6-25).

Рис. 6-25. Ввод даты с помощью календаря

После того как пользователь выберет дату, окно календаря исчезнет. Заметим, однако, что таким способом можно выбрать только одну дату, но не диапазон дат.

Формат Short аналогичен формату Long, но вместо названия месяца в окне элемента управления отображается его номер. На рис. 6-24 элемент управления с таким форматом показан вторым сверху в правом углу.

Формат Time используется для ввода времени в часах, минутах и секундах. На рис. 6-24 этот формат имеют два оставшихся элемента управления DateTimePicker.

И, наконец, формат Custom позволяет программисту задать произвольный формат отображения даты и времени в окне элемента управления DateTimePicker.

Чтобы отказаться от ввода даты с помощью календаря, Вы можете установить значение свойства ShowUpDown, равным true. В этом случае вместо одной кнопки со стрелкой в окне элемента управления DateTimePicker появятся две кнопки, с помощью которых пользователь сможет увеличивать или уменьшать отдельные компоненты даты и времени.

Окно DateTimePicker можно снабдить флажком, установив значение свойства ShowCheckBox, равным true. Если этот флажок не отмечен пользователем, работа соответствующего элемента управления DateTimePicker блокируется. Состояние флажка можно установить или определить при помощи свойства Checked.

Свойства MinDate и MaxDate задают, соответственно, нижнюю и верхнюю границу изменения дат. Используя эти свойства, программист может ограничить диапазон изменения дат в окне элемента управления DateTimePicker.

Что же касается значения даты, установленной пользователем, то программа может извлечь его из свойства Value.

Доработайте обработчик события button1_Click приложения DateTimeApp следующим образом, добавив в него строки для извлечения и отображения даты и времени, введенных с помощью элементов управления DateTimePicker:

private void button1_Click(object sender, System.EventArgs e)
{
string s = " Выбран диапазон дат: ";
DateTime dtStart = monthCalendar1.SelectionRange.Start;
DateTime dtEnd = monthCalendar1.SelectionRange.End;

s += " ("
+ dtStart.Day + "." + dtStart.Month + "." + dtStart.Year +
" - " +
dtEnd.Day + "." + dtEnd.Month + "." + dtEnd.Year + ")";


DateTime dt1 = dateTimePicker1.Value;
DateTime dt2 = dateTimePicker2.Value;
DateTime dt3 = dateTimePicker3.Value;
DateTime dt4 = dateTimePicker4.Value;

s += " \n\nДата 1: " + dt1.Day + "." + dt1.Month + "." + dt1.Year;
s += " \nДата 2: " + dt2.Day + "." + dt2.Month + "." + dt2.Year;

s += " \n\nВремя 3: " +
dt3.Hour + ": " + dt3.Minute + ": " + dt3.Second;

s += " \nВремя 4: " +
dt4.Hour + ": " + dt4.Minute + ": " + dt4.Second;

MessageBox.Show(s);
}

Результат работы этого фрагмента нашего приложения показан на рис. 6-26.

Рис. 6-26. Отображение времени и даты

Таймер

Во многих программах требуется следить за временем или выполнять какие-либо периодические действия. Программы MS-DOS для работы с таймером перехватывали аппаратное прерывание таймера INT 8.

Обычные приложения Microsoft Windows не могут самостоятельно обрабатывать прерывания таймера, поэтому для работы с ним нужно использовать другие способы. ОС Microsoft Windows для каждого приложения позволяет создать несколько виртуальных таймеров. Все эти таймеры работают по прерываниям одного физического таймера.

Так как работа Microsoft Windows основана на передаче сообщений, логично было бы предположить, что и работа виртуального таймера также основана на передаче сообщений. И в самом деле, приложение может заказать для любого своего окна несколько таймеров, которые будут периодически посылать в функцию окна сообщение с кодом WM_TIMER.

В распоряжении приложений C# имеется удобный программный компонент Timer, периодически создающий событие Tick. Обрабатывая это событие, приложения могут выполнять все необходимые периодические действия.

К сожалению, точность таймера ОС оставляет желать лучшего. Сообщения таймера, создающие события Tick, проходят через очередь приложения. К тому же, другие приложения могут блокировать на некоторое время работу Вашего приложения. Поэтому события таймера возникают в общем случае нерегулярно. Кроме того, несмотря на возможность указания интервалов времени в миллисекундах, реальная дискретность таймера определяется периодом прерываний, посылаемых таймером.

Нерегулярность прихода сообщений таймера не вызывает особых проблем, если речь не идет о системах реального времени. Такие системы, основанные на ОС Microsoft Windows, должны использовать специальные драйверы для работы с периферийными устройствами, критичными к скорости реакции системы. Строго говоря, ОС Microsoft Windows не предназначена для работы в системах реального времени. Скорее, она ориентирована на работу с пользователем, когда небольшие задержки событий во времени не имеют никакого значения. Системы реального времени обычно создаются на базе специальных ОС реального времени, рассмотрение которых выходит за рамки нашей книги.

Для демонстрации приемов работы с программным компонентом Timer мы подготовили приложение TimerApp (рис. 6-27), представляющее собой простейшие часы.

Рис. 6-27. Таймер в действии

В окно этого приложения мы поместили текстовое поле класса Label, предназначенное для отображения текущего времени, а также кнопки Старт и Стоп. С помощью кнопки Старт можно запускать часы, а с помощью кнопки Стоп — останавливать их.

Создание таймера

Чтобы добавить таймер Timer в наше приложение, перетащите мышью значок таймера из инструментальной панели в проектируемую форму приложения или щелкните этот значок дважды левой клавишей мыши. Значок таймера с идентификатором timer1 будет показан в нижней части окна дизайнера форм (рис. 6-28).

Рис. 6-28. Свойства таймера Timer

Таймер будет создан как объект класса System.Windows.Forms.Timer. Ниже мы привели код, созданный дизайнером форм при добавлении таймера и после настройки его свойств:

private System.Windows.Forms.Timer timer1;

this.timer1 = new System.Windows.Forms.Timer(this.components);

this.timer1.Enabled = true;
this.timer1.Interval = 1000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);

Обратите внимание, что в качестве параметра конструктору передается ссылка на контейнер, в который был добавлен таймер. В одном приложении Вы можете использовать одновременно несколько таймеров.

Свойства таймера

По умолчанию таймер создается в заблокированном состоянии. Чтобы его разблокировать, необходимо записать значение true в свойство Enabled:

this.timer1.Enabled = true;

Свойство Interval определяет период, с которым таймер создает события Tick. Это время задается в миллисекундах. Ниже мы задали для таймера период времени, равный 1 секунде:

this.timer1.Interval = 1000;

Методы таймера

Наиболее важны методы таймера Start и Stop. Первый из этих методов запускает таймер, а второй — останавливает.

В приложении TimerApp мы вызываем эти методы при обработке событий от кнопок Старт и Стоп, соответственно:

private void button1_Click(object sender, System.EventArgs e)
{
timer1.Start();
}

private void button2_Click(object sender, System.EventArgs e)
{
timer1.Stop();
}

Обработка события Tick

Как мы уже говорили, таймер генерирует события Tick, период которых задается свойством Interval. Обработчик этих событий может выполнять любые действия в соответствии с логикой работы приложения.

Наш обработчик события timer1_Tick получает текущую дату с помощью свойства DateTime.Now, а затем отображает ее в виде текстовой строки в поле label1:

private void timer1_Tick(object sender, System.EventArgs e)
{
DateTime dt = DateTime.Now;
label1.Text = dt.Hour + ": " + dt.Minute + ": " + dt.Second;
}

Таким образом, при работающем таймере в окне текстового поля будет отображаться текущее время.

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

Если Ваше приложение сложное и имеет большое количество параметров, следует хорошо подумать о том, как пользователь будет их настраивать. Часто для настройки параметров предлагается многоуровневая система вложенных меню и нагромождение диалоговых окон, которые вызываются друг из друга. Однако такой подход едва ли придется по душе пользователям.

Если посмотреть, как выглядит система настройки параметров, например, в приложении Microsoft Word, то видно, что она организована в виде блокнота, состоящего из нескольких диалоговых окон с закладками (рис. 6-29). По-видимому, это один из наиболее удачных вариантов, позволяющих пользователю легко найти и выбрать нужную ему группу параметров.

Рис. 6-29. Диалоговое окно Параметры в приложении Microsoft Word

Специально для создания блокнотов с диалоговыми окнами, подобных блокноту, показанному на рис. 6-29, предусмотрен элемент управления TabControl, значок которого можно найти на инструментальной панели Toolbox системы разработки Microsoft Visual Studio.NET.

Создание элемента управления TabControl

Для демонстрации способов применения блокнот TabControl мы подготовим приложение TabControlApp, состоящее из одной формы. Чтобы создать в форме этого приложения блокнот, перетащите значок элемента управления TabControl из только что упомянутой инструментальной панели Toolbox в окно формы. Добавьте туда же кнопку с надписью OK (рис. 6-30).

Рис. 6-30. Добавлен элемент управления TabControl

Добавление страниц

Пока наш блокнот отображается в виде пустого прямоугольника и не содержит ни одной страницы. Для добавления страниц Вам нужно отредактировать свойство TabPages. Эта операция выполняется с помощью редактора страниц блокнота, показанного на рис. 6-31.

Рис. 6-31. Редактор страниц блокнота

Первоначально окно этого редактора будет пустым. Для добавления страниц щелкните несколько раз кнопку Add, расположенную в левом нижнем углу окна редактора. Удаление страниц выполняется с помощью кнопки Remove.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.