MenuItem.MeasureItem
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
public class MenuItemOwnerDraw : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem mnuNew;
private System.Windows.Forms.MenuItem mnuFile;
private System.Windows.Forms.MenuItem mnuFileClose;
private System.Windows.Forms.MenuItem mnuFileSave;
private System.Windows.Forms.MenuItem mnuFileSaveAs;
private System.Windows.Forms.MenuItem mnuEdit;
private System.Windows.Forms.MenuItem mnuEditCopy;
private System.Windows.Forms.MenuItem mnuEditPaste;
private System.Windows.Forms.MenuItem mnuOption1;
private System.Windows.Forms.MenuItem mnuOption2;
private System.Windows.Forms.MenuItem mnuOption3;
private System.Windows.Forms.MenuItem mnuROption1;
private System.Windows.Forms.MenuItem mnuROption2;
private System.Windows.Forms.MenuItem mnuROption3;
private System.Windows.Forms.MenuItem mnuWindow;
private System.Windows.Forms.MenuItem mnuOptions;
private System.Windows.Forms.MenuItem mnuRadioOptions;
private System.Windows.Forms.MenuItem mnuMenu1;
private System.Windows.Forms.MenuItem mnuMenu11;
private System.Windows.Forms.MenuItem mnuMenu12;
private System.Windows.Forms.MenuItem mnuMenu13;
private System.Windows.Forms.MenuItem mnuMenu14;
private System.Windows.Forms.MenuItem mnuMenu2;
private System.Windows.Forms.MenuItem mnuMenu21;
private System.Windows.Forms.MenuItem mnuMenu22;
private System.Windows.Forms.MenuItem mnuMenu23;
private System.Windows.Forms.MenuItem mnuMenu24;
private System.Windows.Forms.MenuItem mnuMerge;
private System.Windows.Forms.MenuItem mnuODShazam;
private string[] files = { @"YourFile.bmp", @"YourFile.bmp" };
private System.Windows.Forms.MenuItem mnuODVote;
private System.Windows.Forms.MenuItem mnuSpecial;
private System.ComponentModel.Container components = null;
public MenuItemOwnerDraw()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.mnuFile = new System.Windows.Forms.MenuItem();
this.mnuNew = new System.Windows.Forms.MenuItem();
this.mnuFileClose = new System.Windows.Forms.MenuItem();
this.mnuFileSave = new System.Windows.Forms.MenuItem();
this.mnuFileSaveAs = new System.Windows.Forms.MenuItem();
this.mnuEdit = new System.Windows.Forms.MenuItem();
this.mnuEditCopy = new System.Windows.Forms.MenuItem();
this.mnuEditPaste = new System.Windows.Forms.MenuItem();
this.mnuOptions = new System.Windows.Forms.MenuItem();
this.mnuOption1 = new System.Windows.Forms.MenuItem();
this.mnuOption2 = new System.Windows.Forms.MenuItem();
this.mnuOption3 = new System.Windows.Forms.MenuItem();
this.mnuRadioOptions = new System.Windows.Forms.MenuItem();
this.mnuROption1 = new System.Windows.Forms.MenuItem();
this.mnuROption2 = new System.Windows.Forms.MenuItem();
this.mnuROption3 = new System.Windows.Forms.MenuItem();
this.mnuSpecial = new System.Windows.Forms.MenuItem();
this.mnuODVote = new System.Windows.Forms.MenuItem();
this.mnuODShazam = new System.Windows.Forms.MenuItem();
this.mnuWindow = new System.Windows.Forms.MenuItem();
this.mnuMenu1 = new System.Windows.Forms.MenuItem();
this.mnuMenu11 = new System.Windows.Forms.MenuItem();
this.mnuMenu12 = new System.Windows.Forms.MenuItem();
this.mnuMenu13 = new System.Windows.Forms.MenuItem();
this.mnuMenu14 = new System.Windows.Forms.MenuItem();
this.mnuMerge = new System.Windows.Forms.MenuItem();
this.mnuMenu2 = new System.Windows.Forms.MenuItem();
this.mnuMenu21 = new System.Windows.Forms.MenuItem();
this.mnuMenu22 = new System.Windows.Forms.MenuItem();
this.mnuMenu23 = new System.Windows.Forms.MenuItem();
this.mnuMenu24 = new System.Windows.Forms.MenuItem();
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuFile,
this.mnuEdit,
this.mnuOptions,
this.mnuRadioOptions,
this.mnuSpecial,
this.mnuWindow,
this.mnuMenu1,
this.mnuMenu2});
//
// mnuFile
//
this.mnuFile.Index = 0;
this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuNew,
this.mnuFileClose,
this.mnuFileSave,
this.mnuFileSaveAs});
this.mnuFile.Text = "File";
//
// mnuNew
//
this.mnuNew.Index = 0;
this.mnuNew.Shortcut = System.Windows.Forms.Shortcut.CtrlN;
this.mnuNew.Text = "&New";
this.mnuNew.Click += new System.EventHandler(this.mnuNew_Click);
//
// mnuFileClose
//
this.mnuFileClose.Index = 2;
this.mnuFileClose.Text = "Close";
//
// mnuFileSave
//
this.mnuFileSave.Index = 3;
this.mnuFileSave.Text = "Save";
this.mnuFileSave.Click += new System.EventHandler(this.mnuFileSave_Click);
//
// mnuFileSaveAs
//
this.mnuFileSaveAs.Index = 4;
this.mnuFileSaveAs.Text = "Save&As";
this.mnuFileSaveAs.Click += new System.EventHandler(this.mnuFileSaveAs_Click);
//
// mnuEdit
//
this.mnuEdit.Index = 1;
this.mnuEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuEditCopy,
this.mnuEditPaste});
this.mnuEdit.Text = "Edit";
//
// mnuEditCopy
//
this.mnuEditCopy.Index = 0;
this.mnuEditCopy.Text = "&Copy";
this.mnuEditCopy.Click += new System.EventHandler(this.mnuEditCopy_Click);
//
// mnuEditPaste
//
this.mnuEditPaste.Index = 1;
this.mnuEditPaste.Text = "Paste";
this.mnuEditPaste.Click += new System.EventHandler(this.mnuEditPaste_Click);
//
// mnuOptions
//
this.mnuOptions.Index = 2;
this.mnuOptions.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuOption1,
this.mnuOption2,
this.mnuOption3});
this.mnuOptions.Text = "Options";
//
// mnuOption1
//
this.mnuOption1.Index = 0;
this.mnuOption1.Text = "Option1";
this.mnuOption1.Click += new System.EventHandler(this.Option_Click);
//
// mnuOption2
//
this.mnuOption2.Index = 1;
this.mnuOption2.Text = "Option2";
this.mnuOption2.Click += new System.EventHandler(this.Option_Click);
//
// mnuOption3
//
this.mnuOption3.Index = 2;
this.mnuOption3.Text = "Option3";
this.mnuOption3.Click += new System.EventHandler(this.Option_Click);
//
// mnuRadioOptions
//
this.mnuRadioOptions.Index = 3;
this.mnuRadioOptions.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuROption1,
this.mnuROption2,
this.mnuROption3});
this.mnuRadioOptions.Text = "Radio Options";
//
// mnuROption1
//
this.mnuROption1.Index = 0;
this.mnuROption1.RadioCheck = true;
this.mnuROption1.Text = "Radio Option 1";
this.mnuROption1.Click += new System.EventHandler(this.RadioOption_Click);
//
// mnuROption2
//
this.mnuROption2.Index = 1;
this.mnuROption2.RadioCheck = true;
this.mnuROption2.Text = "Radio Option 2";
this.mnuROption2.Click += new System.EventHandler(this.RadioOption_Click);
//
// mnuROption3
//
this.mnuROption3.Index = 2;
this.mnuROption3.RadioCheck = true;
this.mnuROption3.Text = "Radio Option 3";
this.mnuROption3.Click += new System.EventHandler(this.RadioOption_Click);
//
// mnuSpecial
//
this.mnuSpecial.Index = 4;
this.mnuSpecial.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuODVote,
this.mnuODShazam});
this.mnuSpecial.Text = "Special";
//
// mnuODVote
//
this.mnuODVote.Index = 0;
this.mnuODVote.OwnerDraw = true;
this.mnuODVote.Text = "Vote";
this.mnuODVote.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.OnDrawItem);
this.mnuODVote.Click += new System.EventHandler(this.mnuODDraw_Click);
this.mnuODVote.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.OnMeasureItem);
//
// mnuODShazam
//
this.mnuODShazam.Index = 1;
this.mnuODShazam.OwnerDraw = true;
this.mnuODShazam.Text = "Shazam";
this.mnuODShazam.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.OnDrawItem);
this.mnuODShazam.Click += new System.EventHandler(this.mnuODDraw_Click);
this.mnuODShazam.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.OnMeasureItem);
//
// mnuWindow
//
this.mnuWindow.Index = 5;
this.mnuWindow.MdiList = true;
this.mnuWindow.MergeOrder = 99;
this.mnuWindow.Text = "&Window";
//
// mnuMenu1
//
this.mnuMenu1.Index = 6;
this.mnuMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuMenu11,
this.mnuMenu12,
this.mnuMenu13,
this.mnuMenu14,
this.mnuMerge});
this.mnuMenu1.Text = "Menu 1";
//
// mnuMenu11
//
this.mnuMenu11.Index = 0;
this.mnuMenu11.MergeOrder = 1;
this.mnuMenu11.Text = "Menu 1.1";
//
// mnuMenu12
//
this.mnuMenu12.Index = 1;
this.mnuMenu12.MergeOrder = 2;
this.mnuMenu12.Text = "Menu 1.2";
//
// mnuMenu13
//
this.mnuMenu13.Index = 2;
this.mnuMenu13.MergeOrder = 3;
this.mnuMenu13.Text = "Menu 1.3";
//
// mnuMenu14
//
this.mnuMenu14.Index = 3;
this.mnuMenu14.MergeOrder = 4;
this.mnuMenu14.Text = "Menu 1.4";
//
// mnuMerge
//
this.mnuMerge.Index = 4;
this.mnuMerge.MergeOrder = 99;
this.mnuMerge.Text = "Merge!";
this.mnuMerge.Click += new System.EventHandler(this.mnuMerge_Click);
//
// mnuMenu2
//
this.mnuMenu2.Index = 7;
this.mnuMenu2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.mnuMenu21,
this.mnuMenu22,
this.mnuMenu23,
this.mnuMenu24});
this.mnuMenu2.Text = "Menu 2";
//
// mnuMenu21
//
this.mnuMenu21.Index = 0;
this.mnuMenu21.MergeOrder = 1;
this.mnuMenu21.Text = "Menu 2.1";
//
// mnuMenu22
//
this.mnuMenu22.Index = 1;
this.mnuMenu22.MergeOrder = 2;
this.mnuMenu22.MergeType = System.Windows.Forms.MenuMerge.Replace;
this.mnuMenu22.Text = "Menu 2.2";
//
// mnuMenu23
//
this.mnuMenu23.Index = 2;
this.mnuMenu23.MergeOrder = 3;
this.mnuMenu23.MergeType = System.Windows.Forms.MenuMerge.Remove;
this.mnuMenu23.Text = "Menu 2.3";
//
// mnuMenu24
//
this.mnuMenu24.Index = 3;
this.mnuMenu24.MergeOrder = 5;
this.mnuMenu24.Text = "Menu 2.4";
//
// MenuItemOwnerDraw
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(536, 148);
this.IsMdiContainer = true;
this.Menu = this.mainMenu1;
this.Name = "MenuItemOwnerDraw";
this.Text = "MenuItemOwnerDraw";
}
[STAThread]
static void Main()
{
Application.Run(new MenuItemOwnerDraw());
}
private void mnuNew_Click(object sender, System.EventArgs e)
{
}
private void Option_Click(object sender, System.EventArgs e)
{
}
private void RadioOption_Click(object sender, System.EventArgs e)
{
}
private void mnuEditCopy_Click(object sender, System.EventArgs e)
{
}
private void mnuEditPaste_Click(object sender, System.EventArgs e)
{
}
private void mnuFileSave_Click(object sender, System.EventArgs e)
{
}
private void mnuFileSaveAs_Click(object sender, System.EventArgs e)
{
}
private void mnuMerge_Click(object sender, System.EventArgs e)
{
}
private void OnDrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
Image img = Image.FromFile(files[e.Index]);
Rectangle r = e.Bounds;
Pen pen = new Pen(e.BackColor,2);
r.Inflate(-6,-6);
e.Graphics.DrawRectangle(pen,r);
e.Graphics.DrawImage(img,r);
}
private void OnMeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
{
Image img = Image.FromFile(files[e.Index]);
e.ItemHeight = img.Height;
e.ItemWidth = img.Width;
}
private void mnuODDraw_Click(object sender, System.EventArgs e)
{
MenuItem item = sender as MenuItem;
if ( item != null )
{
string choice = item.Text;
MessageBox.Show ("You clicked " + choice, "Menu Event Tester",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
Related examples in the same category