2017-04-18 96 views
1

当我右键单击一个图片框时,通过使用上下文菜单项,我显示一个菜单项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); 
} 
+0

调用这些线'pictureBox1.Click + = form_MouseClick;''pictureBox2.Click + = form_MouseClick;'在多次引发的事件中,会将多个事件处理程序添加到同一个事件中。这应该避免。顺便说一句你的问题 –

+0

谢谢@NilayVishwakarma,如果我打电话pictureBox1.Click + = form_MouseClick,它采取鼠标单击,我想使用上下文菜单项SaveimageAs点击 –

+0

为什么你在Form.MouseClick中显示savefiledialog? –

回答

0

将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等 –

相关问题