Практическое руководство. Идентификация панели элемента управления StatusBar, которую щелкнул пользователь, в Windows Forms
Важно!
Элементы управления StatusStrip и ToolStripStatusLabel заменяют элементы управления StatusBar и StatusBarPanel и расширяют их функциональные возможности; однако при необходимости элементы управления StatusBar и StatusBarPanel можно сохранить для обратной совместимости и использования в будущем.
Для программирования элемента управления Элемент управления StatusBar (Windows Forms) на реагирование на щелчок мышью пользователя используется оператор условия в событии PanelClick. Событие содержит аргумент (аргумент области), содержащий ссылку на нажатый элемент управления StatusBarPanel. Используя эту ссылку, можно определить индекс выбранной панели и соответствующим образом запрограммировать ее.
Примечание
Убедитесь, что свойство ShowPanels элемента управления StatusBar имеет значение true.
Чтобы определить, в какой области был щелчок
В обработчике событий PanelClick используйте оператор Select Case (в Visual Basic) или switch case (в Visual C# или Visual C++), чтобы определить, какая панель была выбрана, посредством проверки индекса выбранной панели в аргументах события.
В следующем примере кода требуется наличие в форме элемента управления StatusBar, StatusBar1 и двух объектов StatusBarPanel, StatusBarPanel1 и StatusBarPanel2.
Private Sub StatusBar1_PanelClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.StatusBarPanelClickEventArgs) Handles StatusBar1.PanelClick Select Case StatusBar1.Panels.IndexOf(e.StatusBarPanel) Case 0 MessageBox.Show("You have clicked Panel One.") Case 1 MessageBox.Show("You have clicked Panel Two.") End Select End Sub
private void statusBar1_PanelClick(object sender, System.Windows.Forms.StatusBarPanelClickEventArgs e) { switch (statusBar1.Panels.IndexOf(e.StatusBarPanel)) { case 0 : MessageBox.Show("You have clicked Panel One."); break; case 1 : MessageBox.Show("You have clicked Panel Two."); break; } }
private: void statusBar1_PanelClick(System::Object ^ sender, System::Windows::Forms::StatusBarPanelClickEventArgs ^ e) { switch (statusBar1->Panels->IndexOf(e->StatusBarPanel)) { case 0 : MessageBox::Show("You have clicked Panel One."); break; case 1 : MessageBox::Show("You have clicked Panel Two."); break; } }
(Visual C#, Visual C++) Добавьте в конструктор формы следующий код, чтобы зарегистрировать обработчик событий.
this.statusBar1.PanelClick += new System.Windows.Forms.StatusBarPanelClickEventHandler (this.statusBar1_PanelClick);
this->statusBar1->PanelClick += gcnew System::Windows::Forms::StatusBarPanelClickEventHandler (this, &Form1::statusBar1_PanelClick);
См. также
Задачи
Практическое руководство. Определение размера панелей строки состояния
Пошаговое руководство. Обновление строки состояния во время выполнения
Ссылки
Общие сведения об элементе управления StatusBar (Windows Forms)