6

ツリービューでノードのテキストを取得したい。イベントを使用していclick()ます..イベントAfterSelect()を使用しているときは、ノードテキストを取得できますe.Node.textClick()イベントを使用してテキストを取得するにはどうすればよいですか

4

3 に答える 3

10

Clickこの目的でイベントを使用することはお勧めしません。その理由は、ユーザーが TreeView コントロールでクリックできるさまざまな場所が多数あり、それらの多くが実際のノードに対応していないためです。イベントは、このAfterSelect用途向けに設計されたものであり、はるかに優れた選択肢です。

さらに、このClickイベントはハンドラー メソッドで多くの情報を提供しないため、使用するのがかなり困難です。どのボタンがクリックされたか、どこでクリック イベントが発生したかなどはわかりません。この情報はすべて手動で取得する必要があります。MouseClick代わりに、またはMouseDown/MouseUpイベントをサブスクライブすることをお勧めします。

ユーザーが何をクリックしたかを把握するには、ユーザーがクリックした領域に関する詳細情報を含むオブジェクトTreeView.HitTestを返すメソッドを使用するか、その場所にノードが存在しない場合に単純に返される単純なメソッドを使用する必要があります。クリック。TreeViewHitTestInfoTreeView.GetNodeAtnull

または、現在選択されているノードをいつでも取得するには、TreeView.SelectedNodeプロパティを照会するだけです。ノードが選択されていない場合、これも を返しnullます。

于 2013-05-09T08:52:54.210 に答える
5

treeView1_AfterSelect()イベントを使用すると、正しい選択されたノード テキストが得られるため、イベントを使用することをお勧めします。treeView1_Click()イベントには、すぐに選択されたイベントではなく、最も古い選択されたイベントが表示されます。

Clickイベントで選択したノードテキストを達成できます

 private void treeView1_Click(object sender, EventArgs e)
 {
    MessageBox.Show(treeView1.SelectedNode.Text);
 }

Click()とeventの違いAfterSelect()はそれらの eventargs であることを忘れないでください

treeView1_Click(object sender, EventArgs e)
treeView1_AfterSelect(object sender, TreeViewEventArgs e)

編集:イベントで これを試してみてClick()ください。これが役立つと確信しています。

 private void treeView1_Click(object sender, EventArgs e)
 {
   TreeViewHitTestInfo info = treeView1.HitTest(treeView1.PointToClient(Cursor.Position));
   if (info != null)
     MessageBox.Show(info.Node.Text);
 }
于 2013-05-09T08:54:23.130 に答える
0

私は自分に合った方法を見つけました。やりたいことをするのに時間がかかりましたが、うまくいきました。

Private Sub toolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click

          Dim node As TreeNode = treeView1.SelectedNode
          Dim strRootPath As String = My.Settings.DefaultRootPath

          Dim strNode As String = treeView1.SelectedNode.Text

          Call treeViewRoot(strRootPath)

          Dim nodes As TreeNode() = treeView1.Nodes.Find(strRootPath & "\" & strNode, True)

          For Each node In nodes

                 treeView1.Focus()
                 treeView1.SelectedNode = node

          Next
End Sub
于 2016-08-04T21:37:09.037 に答える