StatusBar
Элемент управления StatusBar применяется в программах для вывода информации в строку состояния — небольшую полоску, расположенную внизу приложения. В Microsoft Word, например, на ней отображается количество страниц, язык ввода, состояние проверки правописания и другие параметры. Добавим к приложению Notepad C# строку состояния, на которой осуществляется подсчет вводимых символов и выводится системное время.
Добавляем на форму blank элемент управления StatusBar. Удаляем содержимое поля свойства Text. В поле свойства Panels щелкаем на кнопку (…). Открывается StatusBarCollectionEditor, в котором мы создаем панели для отображения. Создайте две панели, дважды щелкая на кнопке Add, и установите им следующие свойства (измененные значения выделяются жирным шрифтом) (рис. 2.20 и рис. 2.21):
Рис. 2.20. Свойства панели sbAmount
Рис. 2.21. Свойства панели sbTime
Значения некоторых свойств панели приводятся в таблице 2.2.
Alignment | Выравнивание содержимого свойства Text на панели |
AutoSize | Изменение размеров панели по содержимому |
BorderStyle | Внешний вид панели – утопленная, приподнятая или без выделения |
Icon | Добавление иконки |
Style | Стиль панели |
Text | Текст, располагаемый на панели |
ToolTipText | Всплывающая подсказка — появляется при наведении курсора на панель |
Width | Ширина панели в пикселях |
Name | Название панели для обращения к ней в коде |
Свойства панели, назначаемые в окне редактора StatusBarCollectionEditor, можно изменять в коде —именно так мы сейчас и поступим.
После завершения работы над панелями закрываем редактор. Свойству ShowPanels элемента управления StatusBar устанавливаем значение True. На форме немедленно отображаются две панели.
Выделяем элемент управления RichTextBox, в окне его свойств переключаемся на события и создаем обработчик для события TextChanged:
private void richTextBox1_TextChanged(object sender, System.EventArgs e) { //Свойству Text панели sbAmount устанавливаем надпись "Аmount of symbols" //и длину текста в RichTextBox. sbAmount.Text = "Аmount of symbols" + richTextBox1.Text.Length.ToString(); }
Свойство Text панели sbAmount мы изменяем программно: даже если бы мы ничего не написали в окне редактора StatusBarCollectionEditor, при возникновении события TextChanged на панели появится надпись.
Займемся теперь второй панелью — той, на которую будем выводить системное время. В конструкторе формы blank добавляем код:
public blank() { InitializeComponent(); //Свойству Text панели sbTime устанавливаем системное время, // конвертировав его в тип String sbTime.Text = Convert.ToString(System.DateTime.Now.ToLongTimeString()); //В тексте всплывающей подсказки выводим текущую дату sbTime.ToolTipText = Convert.ToString(System.DateTime.Today.ToLongDateString()); }
Запускаем приложение. Панель с выводимым временем располагается достаточно необычно (рис. 2.22), при необходимости для вывода времени в привычном правом нижнем углу можно добавить третью пустую панель.
Рис. 2.22. Строка состояния с двумя панелями