• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ToolStripMenuItemのクリックイベントからTreeViewのノードを取得したい)

ToolStripMenuItemのクリックイベントからTreeViewのノードを取得したい

このQ&Aのポイント
  • C#3.5を使用している場合、TreeViewのContestMenuStripのToolStripMenuItemをクリックしたときに、選択されているノードを取得する方法はありますか?
  • itemAddToolStripMenuItem_Clickメソッド内で、EventArgs eから選択されているノードを取得する方法を教えてください。
  • ToolStripItemEventArgsにキャストしてノードを取得しようとしましたが、エラーが発生しました。正しい方法を教えてください。

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

  • ベストアンサー
回答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); }

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、まずツリービューのイベントでTagにセットするわけですね。 そのやり方でできました。ありがとうございます。

関連するQ&A