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); } }