2016-05-15 7 views
0

Ich habe eine erweiterte Treeview. Wenn ich die ersten Zeichen eintippe, um schnell auf einen bestimmten Knoten zuzugreifen, wird der ausgewählte Knoten am unteren Rand des Baumansichtsrahmens angezeigt, aber seine eigene Unteransicht ist nicht sichtbar. Wie kann sichergestellt werden, dass die gesamte Unteransicht des ausgewählten Knotens sichtbar ist?Wie kann sichergestellt werden, dass die Unterstrukturansicht des ausgewählten Knotens sichtbar ist?

Jetzt:

|_a 
|_[b] 
=============treeview's frame bottom margin 

Erwartetes Ergebnis:

|_a 
|_[b] 
    |_1 
    |_2 
    | |_k 
    |_3 
============= 
+1

[EnsureVisible] (https://msdn.microsoft.com/en-us/library/system.windows .forms.treenode.ensurevisible% 28v = vs.110% 29.aspx) und [ExpandAll] (https://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.expandall%28v= vs.110% 29.aspx) – TaW

+0

Ich habe ExpandAll bereits verwendet, als ich die gesamte Baumansicht angezeigt habe. Aber wie wird EnsureVisible für die untergeordneten Knoten des ausgewählten Knotens verwendet? –

+0

Versuchen Sie: 'yourTreeView.SelectedNode.Expand()' in 'yourTreeView_AfterSelect' oder drücken Sie einfach die rechte Cursortaste. Es gibt auch eine 'node.LastNode' Methode. – TaW

Antwort

0

hält Dies sollte alwys das letzte Kind des ausgewählten Knotens im Blick:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    treeView1.SelectedNode.Expand(); 
    treeView1.SelectedNode.LastNode.EnsureVisible(); 
} 

Um das letzte Kind zu finden, das letzte Kind usw. können Sie eine rekursiveschreibenFunktion:

TreeNode LastChildNode(TreeNode node) 
{ 
    if (node.Nodes.Count > 0) return LastChildNode(node.LastNode); 
    else return node; 
} 

es nutzen zu können, könnte die AfterSelect Code ändern:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    TreeNode lastChild = LastChildNode(treeView1.SelectedNode.LastNode); 
    if (lastChild != null) lastChild.EnsureVisible(); 
} 
+0

Danke für die Antwort. Ich bin ein Anfänger, wie man diese LastChildNode Funktion genau benutzt, um sicherzustellen, dass der letzte Kindknoten sichtbar ist? –

+0

Siehe meine aktualisierte Antwort! – TaW

+0

Leider stürzt das Programm ab. Hier ist der Fehler: http://pastebin.com/aVnJabbK –

Verwandte Themen