Partilhar via


Como: Determinar qual painel no controle StatusBar do Windows Forms foi clicado

Importante

Os controles StatusStrip e ToolStripStatusLabel substituem e adicionam funcionalidade aos controles StatusBar e StatusBarPanel; no entanto, os controles StatusBar e StatusBarPanel são mantidos para compatibilidade com versões anteriores e uso futuro, se você escolher.

Para programar o controle de de controle StatusBar para responder aos cliques do usuário, use uma instrução case dentro do evento . O evento contém um argumento (o argumento do painel), que inclui uma referência ao StatusBarPanelque foi clicado. Usando essa referência, você pode determinar o índice do painel clicado e programar de acordo.

Observação

Verifique se a propriedade ShowPanels do controle StatusBar está definida como true.

Para determinar qual painel foi clicado

  1. No manipulador de eventos PanelClick, use uma instrução Select Case (no Visual Basic) ou switch case (Visual C# ou Visual C++) para determinar qual painel foi clicado examinando o índice do painel clicado nos argumentos de evento.

    O exemplo de código a seguir requer a presença, no formulário, de um controle StatusBar, StatusBar1e dois objetos StatusBarPanel, StatusBarPanel1 e 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++) Coloque o código a seguir no construtor do formulário para registrar o manipulador de eventos.

    this.statusBar1.PanelClick += new
       System.Windows.Forms.StatusBarPanelClickEventHandler
       (this.statusBar1_PanelClick);  
    
    this->statusBar1->PanelClick += gcnew  
       System::Windows::Forms::StatusBarPanelClickEventHandler  
       (this, &Form1::statusBar1_PanelClick);  
    

Ver também