-PR-

解決済みの質問

質問No.5209582
すぐに回答を!
すぐに回答を!
お気に入り投稿に追加する (0人が追加しました)
回答数1
閲覧数388
ToolStripMenuItemのクリックイベントからTreeViewのノードを取得したい
C#3.5を使用しています。

TreeViewのContestMenuStripのToolStripMenuItemをクリックしたときに
どの(複数のノードに同じContestMenuStripをセットしています)TreeViewのノードからのToolStripMenuItemが
クリックされたかを知るためにEventArgs e からTreeViewの選択されてるノードが取得したいのですが、
どうすれば良いのでしょうか?

private void itemAddToolStripMenuItem_Click(object sender, EventArgs e)
{
var ev = (System.Windows.Forms.ToolStripItemEventArgs)e;// ToolStripItemEventArgsにキャストすればよいかと思ったのですがエラーになります・・・
}
投稿日時 - 2009-08-15 18:45:16

質問者が選んだベストアンサー

回答No.1
 こんにちは。

 ToolStripItemEventArgsはItemAddedイベントからくるものなので、型が合わないのではないでしょうか。
 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.toolstripitemeventargs(VS.85).aspx

 取り合えず、ツリービューのClickイベント辺りで、コンテキストストリップを開く際、Tagメンバにツリービューのオブジェクトを入れて、コンテキストストリップのItemClickedイベントで取り出して見ると言うのは如何でしょう。

//ツリービューのClickイベント
private void treeView1_Click(object sender, EventArgs e)
{
MouseEventArgs mea = (MouseEventArgs)e;
if (mea.Button != MouseButtons.Right)
return;

TreeView treeView = (TreeView)sender;

//Tagにツリービューのオブジェクトを入れる
this.contextMenuStrip1.Tag = treeView;

//コンテキストストリップを表示
this.contextMenuStrip1.Show(treeView, mea.Location);
}

//コンテキストストリップのItemClickedイベント
private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ContextMenuStrip cms = (ContextMenuStrip)sender;

//先程記録しておいたツリービューのオブジェクトを取り出す
TreeView treeView = (TreeView)cms.Tag;

//ツリービューに選択されているノードが無ければ引き返す
if (treeView.SelectedNode == null)
return;

//選択されているノード名を表示する
MessageBox.Show(treeView.SelectedNode.Name);
}
投稿日時 - 2009-08-16 18:21:19
この回答を支持する
(現在0人が支持しています)
お礼
ご返答ありがとうございます。
なるほど、まずツリービューのイベントでTagにセットするわけですね。
そのやり方でできました。ありがとうございます。
投稿日時 - 2009-08-17 02:40:39
この質問は役に立ちましたか?
0人が「このQ&Aが役に立った」と投票しています
別のキーワードで再検索する
もっと聞いてみる

関連するQ&A

回答募集中

この他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する
-PR-

OKWaveのおすすめ情報

特集

同じカテゴリの人気Q&Aランキング

-PR-

ピックアップ

ノウハウ共有サイト

-PR-
-PR-