/ / Espandi / Chiudi albero controllo utente - c #, winforms, albero, treeview

Espandi / Chiudi albero controllo utente - c #, winforms, albero, treeview

Il codice seguente funziona per caricare i file XML di una vista ad albero nel controllo utente. In qualche modo sento che il codice per espandere / chiudere non è ben codificato. C'è un altro modo di codificare questo in una forma più pulita?

try{
this.tvTraceSelect.Progress = true;
this.tvTraceSelect.UnitsPath = unitsPath;
this.tvTraceSelect.TracesPath = tracesPath;
this.tvTraceSelect.View = Traces.View.Files;
this.tvTraceSelect.TreeView.CollapseAll();
if (this.tvTraceSelect.TreeView.Nodes.Count > 0)
{
this.tvTraceSelect.TreeView.Nodes[0].Expand();
if (this.tvTraceSelect.TreeView.Nodes[0].Nodes.Count > 0)
{
this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Expand();
if (this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes.Count > 0)
{
this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Expand();
if (this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Nodes.Count > 0)
{
this.tvTraceSelect.TreeView.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Expand();
}
}
}
}
}catch (Exception _excep)
{
MessageBox.Show(this, "An error occured during the initialization of the InitTracesView .nDetails: "
+ _excep.Message + "nn" + _excep.StackTrace, "Initialization error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

risposte:

1 per risposta № 1
public void ExpandFirst(TreeNodeCollection nodes)
{
if (nodes.Count > 0)
{
nodes[0].Expand();
ExpandFirst(nodes[0].Nodes);
}
}

Chiamalo così:

ExpandFirst(this.tvTraceSelect.TreeView.Nodes)