Owner Drawn MenuItem : MenuItem « GUI Windows Forms « C# / CSharp Tutorial

Home
C# / CSharp Tutorial
1.Language Basics
2.Data Type
3.Operator
4.Statement
5.String
6.struct
7.Class
8.Operator Overload
9.delegate
10.Attribute
11.Data Structure
12.Assembly
13.Date Time
14.Development
15.File Directory Stream
16.Preprocessing Directives
17.Regular Expression
18.Generic
19.Reflection
20.Thread
21.I18N Internationalization
22.LINQ
23.GUI Windows Forms
24.Windows Presentation Foundation
25.Windows Communication Foundation
26.Workflow
27.2D
28.Design Patterns
29.Windows
30.XML
31.XML LINQ
32.ADO.Net
33.Network
34.Directory Services
35.Security
36.unsafe
C# / C Sharp
C# / C Sharp by API
C# / CSharp Open Source
C# / CSharp Tutorial » GUI Windows Forms » MenuItem 
23.41.4.Owner Drawn MenuItem
Owner Drawn MenuItem
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 Disposebool disposing )
  {
    ifdisposing )
    {
      if (components != null
      {
        components.Dispose();
      }
    }
    base.Disposedisposing );
  }

  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(513);
    this.ClientSize = new System.Drawing.Size(536148);
    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);
    }
  }
}
23.41.MenuItem
23.41.1.new MenuItem()
23.41.2.Add action event handler to MenuItemAdd action event handler to MenuItem
23.41.3.Option Menu and RadioOption menuOption Menu and RadioOption menu
23.41.4.Owner Drawn MenuItemOwner Drawn MenuItem
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.