- ベストアンサー
ToolStripMenuItemのクリックイベントからTreeViewのノードを取得したい
- C#3.5を使用している場合、TreeViewのContestMenuStripのToolStripMenuItemをクリックしたときに、選択されているノードを取得する方法はありますか?
- itemAddToolStripMenuItem_Clickメソッド内で、EventArgs eから選択されているノードを取得する方法を教えてください。
- ToolStripItemEventArgsにキャストしてノードを取得しようとしましたが、エラーが発生しました。正しい方法を教えてください。
- みんなの回答 (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); }
お礼
ご返答ありがとうございます。 なるほど、まずツリービューのイベントでTagにセットするわけですね。 そのやり方でできました。ありがとうございます。