1. ホーム
  2. c#

コンテキストメニューでクリックしたノードを検索する

2023-10-24 16:32:58

質問

コンテキスト メニューがツリー リストのどのノードでアクティブになったかを知るにはどうしたらよいでしょうか。たとえば、ノードを右クリックして、メニューからオプションを選択します。

TreeViewsの SelectedNode プロパティを使用することができません。なぜなら、ノードは右クリックされただけで、選択されていないからです。

どのように解決するのですか?

TreeViewにマウスクリックイベントを追加し、MouseEventArgsによって提供されるマウス座標を指定して、GetNodeAtを使用して正しいノードを選択することができます。

void treeView1MouseUp(object sender, MouseEventArgs e)
{
    if(e.Button == MouseButtons.Right)
    {
        // Select the clicked node
        treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);

        if(treeView1.SelectedNode != null)
        {
            myContextMenuStrip.Show(treeView1, e.Location);
        }
    }
}