【C#】ContextMenuを使って画像を保存/コピーしてみよう
今回の記事は前回の記事の続きという事で書いていきます。
heych.hatenablog.com
PictureBoxにContextMenuを設定(コード)
pictureBox1.ContextMenuに新しいContextMenuを設定してやります。
new MenuItem("-")は、隠しコマンドみたいなもので、セパレーターの役割を果たします。
public Form1() { InitializeComponent(); pictureBox1.ContextMenu = new ContextMenu( new MenuItem[]{ new MenuItem("コピー",contextMenu_Copy), new MenuItem("-"), new MenuItem("保存",contextMenu_Save), new MenuItem("-"), new MenuItem("消去",contextMenu_Delete) }); } private void contextMenu_Copy(object sender, EventArgs e) { MessageBox.Show("コピーが押されました。"); } private void contextMenu_Save(object sender, EventArgs e) { MessageBox.Show("保存が押されました。"); } private void contextMenu_Delete(object sender, EventArgs e) { MessageBox.Show("消去が押されました。"); } private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { try { pictureBox1.ImageLocation = textBox1.Text; } catch (Exception ex) { MessageBox.Show(ex.Message, ex.GetType().ToString()); } } }
消去が押された時の処理を書く
private void contextMenu_Delete(object sender, EventArgs e) { pictureBox1.ImageLocation = null; }
コピーが押された時の処理を書く
private void contextMenu_Copy(object sender, EventArgs e) { if (pictureBox1.Image == null) return; Clipboard.SetDataObject(pictureBox1.Image, true); }
保存が押された時の処理を書く
private void contextMenu_Save(object sender, EventArgs e) { if (pictureBox1.Image == null) return; var sfd = new SaveFileDialog(); if (sfd.ShowDialog() == DialogResult.OK) { pictureBox1.Image.Save(sfd.FileName); } }