Чтение онлайн

ЖАНРЫ

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

Средняя часть строки состояния будет отображать одну из двух динамически создаваемых значений, соответствующих текущему времени и текущей дате. Наконец, правая часть строки состояния будет представлять тип ToolStripDropDownButton, позволяющий пользователю переключиться с отображения даты на отображение времени и наоборот (да еще и с пиктограммой счастливого лица в придачу!). На рис. 19.16 показано окно приложения в своем окончательном варианте.

Рис. 19.16. Приложение StatusStrip

Создание системы меню

Создайте новый проект приложения Windows Forms с именем StatusStripApp.

Разместите элемент управления MenuStrip в окне проектирования формы и создайте два пункта меню (Файл->Выход и Справка->О программе). После этого задайте обработку событий Click (щелчок) и MouseHover (задержка указателя мыши) для каждого из дочерних элементов меню (Выход и О программе) с помощью окна свойств.

Реализация обработчика событий Click для элемента Файл->Выход просто завершает работу приложения, а обработчик событий Click для Справка->О программе отображает окно сообщения MessageBox.

private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit; }

private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("My StatusStripApp!"); }

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

Настройка StatusStrip

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

• Создать необходимый программный код вручную, без помощи инструментов проектирования (возможно, с помощью вспомогательного метода CreateStatusStrip, вызываемого в рамках конструктора формы).

• Добавить нужные элементы в диалоговом окне, появляющемся при выборе ссылки Edit Items (Редактирование элементов) из меню контекстного редактора StatusStrip (см. рис. 19.17).

• Добавить нужные элементы по одному с помощью раскрывающегося меню новых элементов StatusStrip (рис. 19.18).

Мы используем раскрывающееся меню новых элементов. С помощью этого меню добавьте два новых типа ToolStripStatusLabel, назначив им имена toolStripStatusLabelMenuState и toolStripStatusLabelClock, и тип ToolStripDropDownButton с именем toolStripDropDownButtonDateTime. Как и следует ожидать, в результате этого в файл *.Designer.cs будут добавлены новые члены-переменные и соответственно обновлен метод InitializeComponent.

Рис. 19.17. Контекстный редактор StatusStrip

Риc. 19.18. Добавление элементов с помощью раскрывающегося меню новых элементов StatusStrip

Заметьте, что StatusStrip поддерживает внутреннюю коллекцию для представления всех созданных панелей.

partial class MainForm {

 private void InitializeComponent {

//

// mainStatusStrip

//

this.mainStatusStrip.Items.AddRange(

new System.Windows.Forms.ToolStripItem[] { this.toolStripStatusLabelMenuState, this.toolStripStatusLabelClock, this.toolStripDropDownButtonDateTime });

 }

 private System.Windows.Forms.StatusStrip mainStatusStrip;

 private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelMenuState;

 private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelClock;

 private System.Windows.Forms.ToolStripDropDownButton toolStripDropDownButtonDateTime;

 …

}

Теперь

в окне проектирования формы выберите ToolStripDropDownButton и добавьте два новых элемента меню День недели и Текущее время, соответственно назначив им имена dayoftheWeekToolStripMenuItem и currentTimeToolStripMenuItem (рис. 19.19).

Рис. 19.19. Добавление пунктов меню для элемента ToolStripDropDownButton

Чтобы настроить панели так, как показано на рис. 19.19, нужно установить подходящие значения для соответствующих свойств в окне свойств Visual Studio 2005. В табл. 19.12 для элементов StatusStrip предлагаются описания свойств, которые нужно установить, и событий, которые нужно обработать (вы, конечно, можете настроить панели так, как сочтете необходимым).

Значение свойства Image члена toolStripDropDownButtonDateTime может указывать на любой файл с изображением, размещенный на вашей машине (при этом, конечно, следует учитывать то, что слишком большие файлы изображений могут порождать проблемы). Для нашего примера вы можете использовать файл happyDude.bmp, предлагаемый вместе с загружаемым исходным кодом для этой книги (посетите раздел загрузки Web-узла Apress, размещенный по адресу.

Таблица 19.12. Конфигурация панелей StatusStrip

Член-переменная панели Свойства для установки События для обработки
toolStripStatusLabelMenuState Spring=true Text=(пусто) TextAlign=TopLeft Нет
toolStripStatusLabelClock BorderSides=All Text=(пусто) Нет
toolStripDropDownButtonDateTime Image=(см. ниже) Нет
dayoftheWeekToolStripMenuItem Text = "День недели" MouseHover Click
currentTimeToolStripMenuItem Text = "Текущее время" MouseHover Click

Итак, проектирование нашего графического интерфейса пользователя завершено. Но, чтобы реализовать оставшиеся обработчики событий, мы с вами должны выяснить роль компонента Timer (таймер).

Работа с типом Timer

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

Первым шагом на пути к достижению этой цели является добавление в форму члена-переменной Timer – компонента, вызывающего некоторый метод (указанный с помощью обработчика события Tick) через заданный интервал времени (указанный с помощью свойства Interval).

Перетащите компонент Timer в окно проектирования формы и переименуйте его в timerDateTimeUpdate. Используя окно свойств, установите значение свойства Interval равным 1000 (это значение в миллисекундах), а значение свойства Enabled – равным true (истина). Наконец, обработайте событие Tick. Перед реализацией обработчика событий Tick определите в проекте новый тип перечня с именем DateTimeFormat. Этот перечень будет использоваться для выяснения того, что должен отображать второй элемент ToolStripStatusLabel – текущее время или текущую дату.

Поделиться с друзьями: