Csharp/CSharp Tutorial/GUI Windows Forms/ContextMenu Popup Menu
Версия от 15:31, 26 мая 2010; (обсуждение)
Add ContextMenu to TextBox
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();
}
}
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();
}
}