| Член-переменная панели | Свойства для установки | События для обработки |
|---|---|---|
| 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 – текущее время или текущую дату.
enum DateTimeFormat {
ShowClock,
ShowDay
}
Построив перечень, обновите MainWindow так, как предлагается ниже.
public partial class MainWindow: Form {
// Какой формат отображать?
DateTimeFormat dtFormat = DateTimeFormat.ShowClock;
…
private void timerDateTimeUpdate_Tick(object sender, EventArgs e) {
string panelInfo = "";
// Создание текущего формата.
if (dtFormat == DateTimeFormat.ShowClock) panelInfo = DateTime.Now.ToLongTimeString();
else panelInfo = DateTime.Now.ToLongDateString();
// Установка текста для панели.
toolStripStatusLabelClock.Text = panelInfo;
}
}
Обратите внимание на то, что обработчик события Timer использует тип DateTime. Здесь вы просто читаете текущее время или дату системы, используя свойство Now, и устанавливаете соответствующее значение для свойства Text члена-переменной toolStripStatusLabelClock.
Включение отображения
В этот момент обработчик событий Tick должен отобразить в панели toolStripStatusLabelClock текущее время, если значением по умолчанию члена-переменной DateTimeFormat является DateTimeFormat.ShowClock. Чтобы позволить пользователю переключаться между отображением даты и времени, обновите MainWindow так, как предлагается ниже (заметьте, что здесь также указано, какой из двух пунктов меню в ToolStripDropDownButton должен при этом отмечаться).
public partial class MainWindow: Form {
// Какой формат отображать?
DateTimeFormat dtFormat = DateTimeFormat.ShowClock;
// Указывает отмеченный элемент.
private ToolStripMenuItem currentCheckedItem;
public MainWindow() {
InitializeComponent();
// Эти свойства можно также установить
// в окне Properties.
Text = "Пример StatusStrip";
CenterToScreen();
BackColor = Color.CadetBlue;
currentCheckedItem = currentTimeToolStripMenuItem;
currentCheckedItem.Checked = true;
}
…
private void currentTimeToolStripMenuItem_Click(object sender, EventArgs e) {
// Установка отметки и формата времени для панели.
currentCheckedItem.Checked = false;