Csharp/CSharp Tutorial/GUI Windows Forms/ContextMenu Popup Menu

Материал из .Net Framework эксперт
Версия от 15:15, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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>

Form popup menu

<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>