Практическое руководство. Идентификация панели элемента управления StatusBar, которую щелкнул пользователь, в Windows Forms
Important
StatusStrip И ToolStripStatusLabel элементы управления заменяют и расширяют функциональные возможности для StatusBar и StatusBarPanel управляет; Однако StatusBar и StatusBarPanel элементы управления сохраняются для обеспечения обратной совместимости и использования в будущем, если вы Выберите этот параметр.
Для программы элемента управления StatusBar элемента управления, чтобы отвечать на щелчок пользователя, используйте инструкции case в PanelClick событий. Событие содержит аргумент (аргумент панели), который содержит ссылку на нажатый элемент StatusBarPanel. Используя эту ссылку, можно определить индекс выбранной панели и программировать соответствующим образом.
Note
Убедитесь, что StatusBar элемента управления ShowPanels свойству 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);