Compartilhar via


Como determinar qual painel no controle StatusBar dos 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 StatusBar Control para que ele responda aos cliques do usuário, use a instrução 'case' no evento PanelClick. O evento contém um argumento (o argumento do painel), que contém uma referência ao StatusBarPanelclicado. Usando essa referência, você pode determinar o índice do painel clicado e programar adequadamente.

Nota

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 do 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);  
    

Consulte também