Csharp/CSharp Tutorial/GUI Windows Forms/ContextMenu Popup Menu
Add ContextMenu to TextBox
<source lang="csharp">using System; using System.Drawing; using System.Windows.Forms; public class TextBoxContextMenuDemo : Form {
public TextBoxContextMenuDemo() { InitializeComponent(); ContextMenu mnuContext = new ContextMenu(); foreach (MenuItem mnuItem in mnuFile.MenuItems) { mnuContext.MenuItems.Add(mnuItem.CloneMenu()); } TextBox1.ContextMenu = mnuContext; } private void TextBox1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { TextBox1.ContextMenu.Show(TextBox1, new Point(e.X, e.Y)); } } private void mnuOpen_Click(object sender, EventArgs e) { MessageBox.Show("This is the event handler for Open.","TextBoxContextMenuDemo"); } private void mnuSave_Click(object sender, EventArgs e) { MessageBox.Show("This is the event handler for Save.","TextBoxContextMenuDemo"); } private void mnuExit_Click(object sender, EventArgs e) { MessageBox.Show("This is the event handler for Exit.","TextBoxContextMenuDemo"); } [STAThread] public static void Main(string[] args) { Application.Run(new TextBoxContextMenuDemo()); } private System.Windows.Forms.MainMenu MainMenu1; private System.Windows.Forms.MenuItem mnuFile; private System.Windows.Forms.MenuItem mnuOpen; private System.Windows.Forms.MenuItem mnuSave; private System.Windows.Forms.MenuItem mnuExit; private System.Windows.Forms.MenuItem MenuItem5; private System.Windows.Forms.MenuItem MenuItem6; private System.Windows.Forms.MenuItem MenuItem7; private System.Windows.Forms.MenuItem MenuItem8; private System.Windows.Forms.TextBox TextBox1; private System.ruponentModel.IContainer components = null; private void InitializeComponent() { this.ruponents = new System.ruponentModel.Container(); this.MainMenu1 = new System.Windows.Forms.MainMenu(this.ruponents); this.mnuFile = new System.Windows.Forms.MenuItem(); this.mnuOpen = new System.Windows.Forms.MenuItem(); this.mnuSave = new System.Windows.Forms.MenuItem(); this.mnuExit = new System.Windows.Forms.MenuItem(); this.MenuItem5 = new System.Windows.Forms.MenuItem(); this.MenuItem6 = new System.Windows.Forms.MenuItem(); this.MenuItem7 = new System.Windows.Forms.MenuItem(); this.MenuItem8 = new System.Windows.Forms.MenuItem(); this.TextBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // MainMenu1 // this.MainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuFile, this.MenuItem5}); // // mnuFile // this.mnuFile.Index = 0; this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.mnuOpen, this.mnuSave, this.mnuExit}); this.mnuFile.Text = "File"; // // mnuOpen // this.mnuOpen.Index = 0; this.mnuOpen.Text = "Open"; this.mnuOpen.Click += new System.EventHandler(this.mnuOpen_Click); // // mnuSave // this.mnuSave.Index = 1; this.mnuSave.Text = "Save"; this.mnuSave.Click += new System.EventHandler(this.mnuSave_Click); // // mnuExit // this.mnuExit.Index = 2; this.mnuExit.Text = "Exit"; this.mnuExit.Click += new System.EventHandler(this.mnuExit_Click); // // MenuItem5 // this.MenuItem5.Index = 1; this.MenuItem5.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.MenuItem6, this.MenuItem7, this.MenuItem8}); this.MenuItem5.Text = "Edit"; // // MenuItem6 // this.MenuItem6.Index = 0; this.MenuItem6.Text = "Cut"; // // MenuItem7 // this.MenuItem7.Index = 1; this.MenuItem7.Text = "Copy"; // // MenuItem8 // this.MenuItem8.Index = 2; this.MenuItem8.Text = "Paste"; // // TextBox1 // this.TextBox1.Location = new System.Drawing.Point(44, 56); this.TextBox1.Multiline = true; this.TextBox1.Name = "TextBox1"; this.TextBox1.Size = new System.Drawing.Size(180, 88); this.TextBox1.TabIndex = 1; this.TextBox1.Text = "Right click here to view the cloned context menu."; this.TextBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TextBox1_MouseDown); // // TextBoxContextMenuDemo // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.TextBox1); this.Menu = this.MainMenu1; this.ResumeLayout(false); this.PerformLayout(); }
}</source>
<source lang="csharp">using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; public class FormPopupMenu : System.Windows.Forms.Form {
private int currFontSize = 12; private ContextMenu popUpMenu; private MenuItem currentCheckedItem; private MenuItem checkedHuge; private MenuItem checkedNormal; private MenuItem checkedTiny; private System.ruponentModel.Container components; public FormPopupMenu() { InitializeComponent(); popUpMenu = new ContextMenu(); popUpMenu.MenuItems.Add("Huge", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Normal", new EventHandler(PopUp_Clicked)); popUpMenu.MenuItems.Add("Tiny", new EventHandler(PopUp_Clicked)); this.ContextMenu = popUpMenu; checkedHuge = this.ContextMenu.MenuItems[0]; checkedNormal = this.ContextMenu.MenuItems[1]; checkedTiny = this.ContextMenu.MenuItems[2]; currentCheckedItem = checkedNormal; currentCheckedItem.Checked = true; this.Resize += new System.EventHandler(this.FormPopupMenu_Resize); this.Paint += new System.Windows.Forms.PaintEventHandler(this.FormPopupMenu_Paint); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } private void InitializeComponent() { this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 273); }
[STAThread] static void Main() { Application.Run(new FormPopupMenu()); } private void PopUp_Clicked(object sender, EventArgs e) { currentCheckedItem.Checked = false; MenuItem miClicked = null; if (sender is MenuItem) miClicked = (MenuItem)sender; else return; string item = miClicked.Text; if(item == "Huge") { currFontSize = 18; currentCheckedItem = checkedHuge; } if(item == "Normal") { currFontSize = 12; currentCheckedItem = checkedNormal; } if(item == "Tiny") { currFontSize = 8; currentCheckedItem = checkedTiny; } currentCheckedItem.Checked = true; Invalidate(); } private void FormPopupMenu_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; g.DrawString("string", new Font("Times New Roman", (float)currFontSize), new SolidBrush(Color.Black), this.DisplayRectangle); } private void FormPopupMenu_Resize(object sender, System.EventArgs e) { Invalidate(); }
}</source>