// Наследуемый метод для центрирования формы.
CenterToScreen;
InitializeComponent;
// Установка отметки выбора для элемента меню 'Средний'.
currentCheckedItem = normalToolStripMenuItem;
currentCheckedItem.Checked = true;
}
Теперь вы имеете возможность программно идентифицировать отмеченный в настоящий момент элемент, и последним из необходимых шагов будет обновление обработчика события ContextMenuItemSelection_Clicked. В нем нужно снять отметку выбора с элемента, выбранного ранее, и отметить новый текущий объект ToolStripMenuItem в соответствии с новым выбором пользователя.
private void ContextMenuItemSelection_Clicked(object sender, EventArgs e) {
// Удаление отметки выбора для элемента.
currentCheckedItem.Checked = false;
…
if (miClicked.Name == "hugeToolStripMenuItem") {
currFontSize = TextFontSize.FontSizeHuge;
currentCheckedItem = hugeToolStripMenuItem;
}
if (miClicked.Name = "normalToolStripMenuItem") {
currFontSize = TextFontSize.FontSizeNormal;
currentCheckedItem = normalToolStripMenuItem;
}
if (miClicked.Name == "tinyToolStripMenuItem") {
currFontSize = TextFontSize.FontSizeTiny;
currentCheckedItem = tinyToolStripMenuItem;
}
// Установка отметки выбора для нового элемента.
currentCheckedItem.Checked = true;
…
}
На рис. 19.15 показан законченный проект MenuStripApp в действии.
Исходный код. Проект MenuStripApp размещен в подкаталоге, соответствующем главе 19.
Рис. 19.15. Установка и удаление отметок выбора для элементов ToolStripMenuItem
Работа с StatusStrip
В дополнение к системе меню многие формы предлагают поддержку
Хотя поддержка строк состояния (с помощью типа System.Windows.Forms. StatusBar) предлагается с момента появления платформы .NET, в .NET 2.0 вместо простого элемента StatusBar предлагается использовать новый тип StatusStrip. Подобно обычной строке состояния, StatusStrip может состоять из любого числа панелей, содержащих текстовые/графические данные, предоставленные типом ToolStripStatus. Однако StatusStrip может содержать и дополнительные элементы, например, следующего вида.
• ToolStripProgressBar – встроенный индикатор выполнения (хода задания).
• ToolStripDropDownButton – встроенная кнопка, отображающая при щелчке на ней раскрывающийся список вариантов выбора.
• ToolStripSplitButton – подобен ToolStripDropDownButton, но отображает элементы раскрывающегося списка только тогда, когда пользователь щелкает непосредственно в области раскрывающегося списка. ToolStripSplitButton предлагает также поведение, аналогичное обычной кнопке, и поэтому может поддерживать обработку события Click.
Для примера мы построим новый объект MainWindow, в котором поддерживается простое меню (Файл->Выход и Справка->О программе) и StatusStrip. Левая панель строки состояния будет использоваться для отображения строковых данных, соответствующих выбранному в настоящий момент элементу меню (например, при выборе пользователем элемента Выход в строке будет отображаться "Выход из приложения").
Средняя часть строки состояния будет отображать одну из двух динамически создаваемых значений, соответствующих текущему времени и текущей дате. Наконец, правая часть строки состояния будет представлять тип ToolStripDropDownButton, позволяющий пользователю переключиться с отображения даты на отображение времени и наоборот (да еще и с пиктограммой счастливого лица в придачу!). На рис. 19.16 показано окно приложения в своем окончательном варианте.
Рис. 19.16. Приложение StatusStrip
Создание системы меню
Создайте новый проект приложения Windows Forms с именем StatusStripApp. Разместите элемент управления MenuStrip в окне проектирования формы и создайте два пункта меню (Файл->Выход и Справка->О программе). После этого задайте обработку событий Click (щелчок) и MouseHover (задержка указателя мыши) для каждого из дочерних элементов меню (Выход и О программе) с помощью окна свойств.