Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 471

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

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

Создайте новый проект приложения 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;