using System;
using System.Drawing;
using System.Windows.Forms;
class FontMenu: Form
{
const int iPointSize = 24;
string strFacename;
public static void Main()
{
Application.Run(new FontMenu());
}
public FontMenu()
{
strFacename = Font.Name;
Menu = new MainMenu();
MenuItem mi = new MenuItem("&Facename");
mi.Popup += new EventHandler(MenuFacenameOnPopup);
mi.MenuItems.Add(" "); // Necessary for pop-up call
Menu.MenuItems.Add(mi);
}
void MenuFacenameOnPopup(object obj, EventArgs ea)
{
MenuItem miFacename = (MenuItem)obj;
FontFamily[] aff = FontFamily.Families;
EventHandler ehClick = new EventHandler(MenuFacenameOnClick);
MenuItem[] ami = new MenuItem[aff.Length];
for (int i = 0; i < aff.Length; i++)
{
ami[i] = new MenuItem(aff[i].Name);
ami[i].Click += ehClick;
if (aff[i].Name == strFacename)
ami[i].Checked = true;
}
miFacename.MenuItems.Clear();
miFacename.MenuItems.AddRange(ami);
}
void MenuFacenameOnClick(object obj, EventArgs ea)
{
MenuItem mi = (MenuItem)obj;
strFacename = mi.Text;
Invalidate();
}
protected override void OnPaint(PaintEventArgs pea)
{
Graphics grfx = pea.Graphics;
Font font = new Font(strFacename, iPointSize);
StringFormat strfmt = new StringFormat();
grfx.DrawString("Sample Text", font, new SolidBrush(ForeColor),
ClientRectangle, strfmt);
}
}