Практическое руководство. Идентификация панели элемента управления StatusBar, которую щелкнул пользователь, в Windows Forms

Обновлен: Ноябрь 2007

5d034wbx.alert_caution(ru-ru,VS.90).gifВажное примечание.

Элементы управления StatusStrip и ToolStripStatusLabel заменяют элементы управления StatusBar и StatusBarPanel и расширяют их функциональные возможности; однако при необходимости элементы управления StatusBar и StatusBarPanel можно сохранить для обратной совместимости и использования в будущем.

Для программирования элемента управления Элемент управления StatusBar (Windows Forms) на реагирование на щелчок мышью пользователя используется оператор условия в событии PanelClick. Событие содержит аргумент (аргумент области), содержащий ссылку на нажатый элемент управления StatusBarPanel. Используя эту ссылку, можно определить индекс выбранной панели и соответствующим образом запрограммировать ее.

5d034wbx.alert_note(ru-ru,VS.90).gifПримечание.

Убедитесь, что свойство 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)

StatusBar

ToolStripStatusLabel