Как удалить событие ввода мыши
Всем привет,
Есть ли способ упростить этот код? вместо того чтобы включать и отключать pictureboxs
имя picturebox1.События мыши: mouseenter += form_MouseClick;
имя picturebox1.События мыши: mouseenter += form_MouseClick;
Пожалуйста, посмотрите код.
Что я уже пробовал:
private void form_MouseClick(object sender, EventArgs e) { PictureBox picturebox = sender as PictureBox; SaveFileDialog savefile = new SaveFileDialog(); savefile.Filter = @"Images|*.png"; if (savefile.ShowDialog() == DialogResult.OK) { string filepath = Path.GetExtension(savefile.FileName); if (picturebox != null && filepath != null) { Image image = picturebox.Image; SaveImage(image, savefile.FileName); } } disable_clickevent(); } private static void SaveImage(Image image, string destPath) { image.Save(destPath, System.Drawing.Imaging.ImageFormat.Png); } private void savaImageToolStripMenuItem_Click(object sender, EventArgs e) { pictureBox1.MouseEnter += form_MouseClick; pictureBox2.MouseEnter += form_MouseClick; } private void disable_clickevent() { pictureBox1.MouseEnter -= form_MouseClick; pictureBox2.MouseEnter -= form_MouseClick; }
gggustafson
Предложение: у вас есть два отдельных события - это означает, что у вас есть два отдельных обработчика событий, один для MouseClick и один для MouseEnter. Помните "разделяй и властвуй"? Если обработка будет одинаковой, то вызовите общий метод из обоих обработчиков.
Member 12277263
Спасибо,
но есть ли способ использовать ContextMenuStrip?SourceControl, чтобы получить PictureBox без добавления / удаления этих событий.
Ralf Meier
Я не понимаю, чего вы добиваетесь - извините.
Возможно, вы дадите лучшее объяснение ...
На мой взгляд, вам не нужно удалять MouseEnter.События или назначить его обработчик форме ...