Шаблон для вашего собственного кода после этого:
public class ReadDocumentEventArgs : EventArgs
{
public string ImageInfo { get; set; }
}
public void ReadDocument(object sender, ReadDocumentEventArgs ea)
{
// do whatever you need to do
MessageBox.Show(ea.ImageInfo); // example
}
private void link1add_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
PictureBox imageCtrl = sender as PictureBox;
// get the information you need to get from your control to identify it
string imgInfo = "Hello, World!"; // example
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2",
(EventHandler)((s, rde) =>
{ ReadDocument(s, new ReadDocumentEventArgs()
{ ImageInfo = imgInfo });
}));
link1add.ContextMenu = cm;
}
}
В вашем MouseDown поверх вашего изображения вы можете создать пункт меню, используя код, который я предоставил выше, который будет вызывать обработчик событий с именем ReadDocument.Обратите внимание, что существует класс ReadDocumentEventArgs, который можно настроить так, чтобы он содержал необходимые свойства, которые помогут вам определить, на какое изображение вы щелкнули.
Итак, в приведенном выше примере одна из первых вещей, которая происходит вMouseDown - это то, что вы получаете экземпляр управления изображением (я предполагаю, что это Picture Box, но вы можете привести его к тому, чем он является на самом деле).
В этот момент вы можете получить имя файла или что-то еще из вашего изображения, которое идентифицирует его, с помощью других элементов управления в вашей форме.
Далее, при создании элемента контекстного меню, он сообщаетпункт меню для вызова ReadDocument, но передает специальные данные, только что взятые из элемента управления изображением.
В методе ReadDocument вы можете затем делать все, что вам нужно.В моем примере я просто выбрасываю MessageBox, чтобы показать вам, какие данные вы передали.