ツリービューでノードのテキストを取得したい。イベントを使用していclick()
ます..イベントAfterSelect()
を使用しているときは、ノードテキストを取得できますe.Node.text
。Click()
イベントを使用してテキストを取得するにはどうすればよいですか
3 に答える
Click
この目的でイベントを使用することはお勧めしません。その理由は、ユーザーが TreeView コントロールでクリックできるさまざまな場所が多数あり、それらの多くが実際のノードに対応していないためです。イベントは、このAfterSelect
用途向けに設計されたものであり、はるかに優れた選択肢です。
さらに、このClick
イベントはハンドラー メソッドで多くの情報を提供しないため、使用するのがかなり困難です。どのボタンがクリックされたか、どこでクリック イベントが発生したかなどはわかりません。この情報はすべて手動で取得する必要があります。MouseClick
代わりに、またはMouseDown
/MouseUp
イベントをサブスクライブすることをお勧めします。
ユーザーが何をクリックしたかを把握するには、ユーザーがクリックした領域に関する詳細情報を含むオブジェクトTreeView.HitTest
を返すメソッドを使用するか、その場所にノードが存在しない場合に単純に返される単純なメソッドを使用する必要があります。クリック。TreeViewHitTestInfo
TreeView.GetNodeAt
null
または、現在選択されているノードをいつでも取得するには、TreeView.SelectedNode
プロパティを照会するだけです。ノードが選択されていない場合、これも を返しnull
ます。
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);
}
私は自分に合った方法を見つけました。やりたいことをするのに時間がかかりましたが、うまくいきました。
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