将右键单击菜单项添加到图片框
问题描述:
当我右键单击一个图片框时,通过使用上下文菜单项,我显示一个菜单项saveImageAs。将右键单击菜单项添加到图片框
问题:当我右键点击图片框,它显示saveImageAs,当我点击saveImageAs它会打
private void saveImageAsToolStripMenuItem_Click(object sender, EventArgs e)
{
//what should i use instead of click to hit form_Mouseclick
pictureBox1.Click += form_MouseClick;
pictureBox2.Click += form_MouseClick;
}
这里我应该怎么用的,而不是pictureBox1_click()
打form_MouseClick()
。如果有人能帮助,我会非常感激。
private void saveImageAsToolStripMenuItem_Click(object sender, EventArgs e)
{
pictureBox1.Click += form_MouseClick;
pictureBox2.Click += form_MouseClick;
}
private void form_MouseClick(object sender, MouseEventArgs e)
{
PictureBox pb = sender as PictureBox;
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Images|*.png;*.bmp;*.jpg";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string filepath = System.IO.Path.GetExtension(sfd.FileName);
}
if(pb != null && sfd.FileName != null)
{
Image im = pb.Image;
SaveImage(im, sfd.FileName);
}
}
private static void SaveImage(Image im, string destPath)
{
im.Save(destPath, System.Drawing.Imaging.ImageFormat.Png);
}
答
将ContextMenuStrip添加到您的表单中。将一个项目'SaveImageAs'添加到您的上下文菜单中。通过该线路设置的ContextMenuStrip作为文本菜单为图片框:
this.pictureBox1.ContextMenuStrip = this.contextMenuStrip1;
代码的休息是不言自明的
private void saveImageAsToolStripMenuItem_Click(object sender, EventArgs e)
{
ShowSaveDialog();
}
private void ShowSaveDialog()
{
PictureBox pb = pictureBox1;
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Images|*.png;*.bmp;*.jpg";
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string filepath = System.IO.Path.GetExtension(sfd.FileName);
if (pb != null && sfd.FileName != null)
{
Image im = pb.Image;
SaveImage(im, sfd.FileName);
}
}
}
private static void SaveImage(Image im, string destPath)
{
im.Save(destPath, System.Drawing.Imaging.ImageFormat.Png);
}
+0
如果我们有多个图片框,该怎么办? picturebox1,picturebox2等 –
调用这些线'pictureBox1.Click + = form_MouseClick;''pictureBox2.Click + = form_MouseClick;'在多次引发的事件中,会将多个事件处理程序添加到同一个事件中。这应该避免。顺便说一句你的问题 –
谢谢@NilayVishwakarma,如果我打电话pictureBox1.Click + = form_MouseClick,它采取鼠标单击,我想使用上下文菜单项SaveimageAs点击 –
为什么你在Form.MouseClick中显示savefiledialog? –