プロが教える店舗&オフィスのセキュリティ対策術

C#にてフォームアプリを作成しています。
そこでツリービューに表示されたノードを右クリックしたときにコンテキストメニューが表示される
ように下記のように記述しました。表示されたノードの上で右クリックすると「Export」、「Import」
というメニューが表示されます。
しかし、イベントハンドラの書き方がよくわかりません。
「Export」又は「Import」がクリックされたというイベントはどう検出すればよいでしょうか。




// ノード右クリック時の動作
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
// 右クリックでもノードを選択させる
if (e.Button == MouseButtons.Right)
{
// ノードの選択
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);


// コンテクストメニューの作成
ContextMenuStrip contextMenu = new ContextMenuStrip();

ToolStripMenuItem openLabel = new ToolStripMenuItem();
openLabel.Text = "Export";
ToolStripMenuItem deleteLabel = new ToolStripMenuItem();
deleteLabel.Text = "Import";


contextMenu.Items.Add(openLabel);
contextMenu.Items.Add(deleteLabel);

// ツリービューにコンテキストメニューを追加
treeView1.ContextMenuStrip = contextMenu;
}
}

A 回答 (1件)

ToolStripMenuItemにはClickイベントがありますから,Clickイベントを普通に検出すればよいです。


詳しくはC#の文法書をお読みください。

a) ラムダ式を使ってハンドラを書く
openLabel.Click += (_, __) => { MessageBox.Show(this, "Export"); };
deleteLabel.Click += (_, __) => { MessageBox.Show(this, "Import"); };

b) 別途メソッドを用意してハンドラを追加する
private openLabel_Click (object sender, EventArgs e)
{
MessageBox.Show(this, "Export");
}

private deleteLabel_Click (object sender, EventArgs e)
{
MessageBox.Show(this, "Import");
}

openLabel.Click += openLabel_Click;
deleteLabel.Click += deleteLabel_Click;
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご提示頂きました、b)の手法を用いさせていただきました。
ありがとうございました。

お礼日時:2014/09/20 06:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています