How to: Determine Which Panel in the Windows Forms StatusBar Control Was Clicked

NoteImportant

The StatusStrip and ToolStripStatusLabel controls replace and add functionality to the StatusBar and StatusBarPanel controls; however, the StatusBar and StatusBarPanel controls are retained for both backward compatibility and future use, if you choose.

To program the StatusBar Control (Windows Forms) control to respond to user clicks, use a case statement within the PanelClick event. The event contains an argument (the panel argument), which contains a reference to the clicked StatusBarPanel. Using this reference, you can determine the index of the clicked panel, and program accordingly.

NoteNote

Ensure that the StatusBar control's ShowPanels property is set to true.

To determine which panel was clicked

  • In the PanelClick event handler, use a Select Case (in Visual Basic) or switch case (Visual C# or Visual C++) statement to determine which panel was clicked by examining the index of the clicked panel in the event arguments.

    The following code example requires the presence, on the form, of a StatusBar control, StatusBar1, and two StatusBarPanel objects,StatusBarPanel1and 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++) Place the following code in the form's constructor to register the event handler.

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

See Also

Tasks

How to: Set the Size of Status-Bar Panels
Walkthrough: Updating Status Bar Information at Run Time

Reference

StatusBar Control Overview (Windows Forms)
StatusBar
ToolStripStatusLabel