如何确定单击了 Windows 窗体状态栏控件中的哪个面板
重要
StatusStrip 和 ToolStripStatusLabel 控件替换并添加 StatusBar 和 StatusBarPanel 控件的功能;但是,如果选择,则保留 StatusBar 和 StatusBarPanel 控件以实现向后兼容性和将来使用。
要使 StatusBar 控件 能响应用户的点击操作,请在 PanelClick 事件中使用 case 语句。 该事件包含一个参数(面板参数),该参数包含对单击的 StatusBarPanel的引用。 使用此引用,您可以确定所单击面板的索引,并据此进行编程。
注意
确保 StatusBar 控件的 ShowPanels 属性设置为 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);