2013-06-01 3 views
-1

им делать на контекстное меню можно найти на RightClick как в действительности код-редактор что-то вроде этого: enter image description hereДобавление 2 обработчика событий в 1 Управление

и им уже сделано с вырезать, копировать и вставлять с помощью используя этот код:

private void rtb_MouseDown(object sender, MouseEventArgs e) 
     { 
if (e.Button == MouseButtons.Right) 
      { 

       MenuItem[] menuItems = new MenuItem[] { 
             new MenuItem("Cut", new System.EventHandler(this.CutMenuItemClick)), 
             new MenuItem("Copy", new System.EventHandler(this.CopyMenuItemClick)), 
             new MenuItem("Paste", new System.EventHandler(this.PasteMenuItemClick)), 


       ContextMenu rightcontext = new ContextMenu(menuItems); 

       int xOffset = Cursor.Position.X - DtexteditoR.ActiveForm.Location.X; 
       int yOffset = Cursor.Position.Y - DtexteditoR.ActiveForm.Location.Y; 

       rightcontext.Show(DtexteditoR.ActiveForm, new Point(xOffset, yOffset)); 

      } 
     } 
private void CutMenuItemClick(object sender, EventArgs e) 
     { 
      rtb.Cut(); 
     } 
     private void CopyMenuItemClick(object sender, EventArgs e) 
     { 
      rtb.Copy(); 
     } 
     private void PasteMenuItemClick(object sender, EventArgs e) 
     { 
      rtb.Paste(); 
     } 

им с помощью WinForms с динамическим управлением (не использовать дизайнер) и мой вопрос был о том, как сделать несколько обработчик событий в элементе управления (различные обработчик) что-то вроде этого:

new MenuItem("Copy", new System.EventHandler(this.CopyMenuItemClick) || new System.Windows.Forms.MeasureItemEventHandler(this.MeasureCopy)), 

private void MeasureCopy(object obj, 
          MeasureItemEventArgs miea) 
     { 
      MenuItem mi = (MenuItem)obj; 

      // Get standard menu font so that the text in this 
      // menu rectangle doesn't look funny with a 
      // different font 
      Font menuFont = SystemInformation.MenuFont; 

      StringFormat strfmt = new StringFormat(); 
      SizeF sizef = 
       miea.Graphics.MeasureString(mi.Text, menuFont, 1000, strfmt); 

      // Get image so size can be computed 
      Bitmap bmMenuImage = new Bitmap(typeof(NewForm), "COPY.BMP"); 

      // Add image height and width to the text height and width when 
      // drawn with selected font (got that from measurestring method) 
      // to compute the total height and width needed for the rectangle 
      miea.ItemWidth = (int)Math.Ceiling(sizef.Width) + bmMenuImage.Width; 
      miea.ItemHeight = (int)Math.Ceiling(sizef.Height) + bmMenuImage.Height; 
     } 

для меня, чтобы добавить изображение рядом с «Копировать».

, как сделать эту вещь:

new MenuItem("Copy", new System.EventHandler(this.CopyMenuItemClick) || new System.Windows.Forms.MeasureItemEventHandler(this.MeasureCopy)), 

правильный путь .thanks!

+0

Я не знаю, если я правильно понимаю, но если вы используете несколько событие обработчиков для одного события (из одного элемента управления), то какой обработчик события будет запущен? первый или второй? Скажем, если я нажимаю копию за один раз, то CopyMenuItemClick уволен, но в другой раз это был MeasureCopy. Но если вы скажете, что после CopyMenuItemClick тогда это время, когда используется MeasureCopy, я думаю, что это имеет смысл. См. Эту ссылку здесь http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/70cc4de1-cdda-4f1b-92a5-407443b2f591. – Edper

ответ

1

я бы просто использовать

MenuItem item = new MenuItem("Copy"); 
item.Click += this.CopyMenuItemClick; 
item.Click += this.MeasureCopy; 
1

MeasureItem событие не может быть установлен из конструктора, попробуйте:

MenuItem item = new MenuItem("Copy", new System.EventHandler(this.CopyMenuItemClick)); 
item.MeasureItem += this.MeasureCopy; 
Смежные вопросы