Gewusst wie: Bestimmen, auf welchen Bereich im StatusBar-Steuerelement in Windows Forms geklickt wurde

Wichtig

Obwohl die Steuerelemente StatusBar und StatusBarPanel durch die Steuerelemente StatusStrip und ToolStripStatusLabel ersetzt und funktionell erweitert werden, werden die Steuerelemente StatusBar und StatusBarPanel sowohl aus Gründen der Abwärtskompatibilität als auch, falls gewünscht, für die zukünftige Verwendung beibehalten.

Um das StatusBar-Steuerelement (Windows Forms)-Steuerelement so zu programmieren, dass es auf Benutzerklicks reagiert, verwenden Sie die case-Anweisung im PanelClick-Ereignis. Das Ereignis enthält ein Argument (das panel-Argument), das einen Verweis auf das StatusBarPanel-Objekt enthält, auf das geklickt wurde. Mit diesem Verweis können Sie den Index der Fläche bestimmen, auf die geklickt wurde, und die Programmierung entsprechend anpassen.

Tipp

Stellen Sie sicher, dass die ShowPanels-Eigenschaft des StatusBar-Steuerelements auf true festgelegt ist.

So bestimmen Sie, auf welche Fläche geklickt wurde

  • Sie können im PanelClick-Ereignishandler mithilfe einer Select Case-Anweisung (in Visual Basic) oder einer switch case-Anweisung (Visual C# oder Visual C++) bestimmen, auf welchen Bereich geklickt wurde, indem Sie den Index des betreffenden Bereichs in den Ereignisargumenten überprüfen.

    Im folgenden Codebeispiel wird davon ausgegangen, dass im Formular ein StatusBar-Steuerelement, StatusBar1, und zwei StatusBarPanel-Objekte, StatusBarPanel1 und StatusBarPanel2, vorhanden sind.

    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++) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.

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

Siehe auch

Aufgaben

Gewusst wie: Festlegen der Größe eines Statusleistenbereichs

Exemplarische Vorgehensweise: Aktualisieren von Statusleisteninformationen zur Laufzeit

Referenz

Übersicht über das StatusBar-Steuerelement (Windows Forms)

StatusBar

ToolStripStatusLabel