web-dev-qa-db-ja.com

.Net TreeNodeを右クリックして選択します。

ユーザーが右クリックしたときにツリービューにポップアップメニューを表示しようとしています-選択したノードに適用する状況依存アクションを選択できます。

現時点では、ユーザーはノードを左クリックしてから右クリックして選択する必要があります。

ノードを右クリックしてそのノードを選択することは可能ですか?そうであれば、これを行うための最良の方法は何ですか?.

25
Martin

左クリックと右クリックの両方でクリックイベントが発生し、選択が変更されます。ただし、特定の状況では(私はまだトレースする必要がありません)、選択は右クリックされたノードから最初に選択されたノードに変わります。

右クリックで選択が確実に変更されるようにするために、MouseDownイベントを使用して、選択したノードを強制的に変更できます。

treeView.MouseDown += (sender, args) =>
    treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y);

他のポスターの1つが指摘したように、少し良いのはNodeMouseClickイベントを使用することです。

treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
53
Kaleb Pederson

はい。 NodeMouseClickイベントの処理は次のとおりです。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
      treeView1.SelectedNode = e.Node;
}
16
Sasha Reminnyi

次に、コンテキストメニューストリップをフォームにドラッグします。

 private void treeView1_MouseDown(object sender, MouseEventArgs e)
 {
   if (e.Button == MouseButtons.Right)
   {
       // Display context menu for eg:
       ContextMenu1.Show();
   }
}
5
nik0lias