using System;
using System.Drawing;
using System.Windows.Forms;
class MenuItemHelp: MenuItem
{
StatusBarPanel sbpHelpPanel;
string strHelpText;
public MenuItemHelp(string strText): base(strText)
{
}
public StatusBarPanel HelpPanel
{
get { return sbpHelpPanel; }
set { sbpHelpPanel = value; }
}
public string HelpText
{
get { return strHelpText; }
set { strHelpText = value; }
}
protected override void OnSelect(EventArgs ea)
{
base.OnSelect(ea);
if (HelpPanel != null)
HelpPanel.Text = HelpText;
}
}
class MenuHelpSubclass: Form
{
StatusBarPanel sbpMenuHelp;
string strSavePanelText;
public static void Main()
{
Application.Run(new MenuHelpSubclass());
}
public MenuHelpSubclass()
{
StatusBar sb = new StatusBar();
sb.Parent = this;
sb.ShowPanels = true;
sbpMenuHelp = new StatusBarPanel();
sbpMenuHelp.Text = "Ready";
sbpMenuHelp.AutoSize = StatusBarPanelAutoSize.Spring;
sb.Panels.Add(sbpMenuHelp);
Menu = new MainMenu();
MenuItemHelp mi = new MenuItemHelp("&File");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Commands for working with files";
Menu.MenuItems.Add(mi);
mi = new MenuItemHelp("&Open...");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Opens an existing document";
Menu.MenuItems[0].MenuItems.Add(mi);
mi = new MenuItemHelp("&Close");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Closes the current document";
Menu.MenuItems[0].MenuItems.Add(mi);
mi = new MenuItemHelp("&Save");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Saves the current document";
Menu.MenuItems[0].MenuItems.Add(mi);
mi = new MenuItemHelp("&Edit");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Commands for editing the document";
Menu.MenuItems.Add(mi);
mi = new MenuItemHelp("Cu&t");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Deletes the selection and " +
"copies it to the clipboard";
Menu.MenuItems[1].MenuItems.Add(mi);
mi = new MenuItemHelp("&Copy");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Copies the selection to the clipboard";
Menu.MenuItems[1].MenuItems.Add(mi);
mi = new MenuItemHelp("&Paste");
mi.HelpPanel = sbpMenuHelp;
mi.HelpText = "Replaces the current selection " +
"with the clipboard contents";
Menu.MenuItems[1].MenuItems.Add(mi);
}
protected override void OnMenuStart(EventArgs ea)
{
strSavePanelText = sbpMenuHelp.Text;
}
protected override void OnMenuComplete(EventArgs ea)
{
sbpMenuHelp.Text = strSavePanelText;
}
}