2017-04-18 5 views
1

画像ボックスを右クリックすると、コンテキストメニュー項目を使用して、メニューアイテムsaveImageAsが表示されます。画像ボックスに右クリックメニューアイテムを追加する

問題:私は右のピクチャボックスをクリックすると、それは私がsaveImageAsをクリックしたとき、それは私がform_MouseClick()をヒットする代わりにpictureBox1_click()の何を使用する必要があります。ここ

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; 
} 

にヒットする、saveImageAsを示しています。もし誰かが私が最も感謝してくれるのを助けることができたら。

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」という項目を追加します。この回線を介してピクチャのためのContextMenuよういる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

複数の画像ボックスがある場合はどうすればいいですか?ピクチャーボックス1、ピクチャーボックス2など –

関連する問題