Ich drücke es mal so aus
Aufgrund des "Delphi oder C#" Threads bin ich wieder zu C# gestoßen (ich hatte mich KURZZEITIG) damit beschäftigt
Deshalb verzeihe mir die etwas "krude" Groß/Kleinschreibung
Auch die Trennung zwischen Sub/Basepath ist inzwischen auch hinfällig.
Und was meinst du damit, die DirectoryInfo zu übergeben?
[edit]So jetzt habe ich mal SearchPath "verbessert" (ich hoffe es):
Code:
private int SearchPath(DirectoryInfo workingDir, TreeNodeCollection root)
{
int fileCnt = 0;
foreach (DirectoryInfo subDir in workingDir.GetDirectories())
{
TreeNode tn = new TreeNode(subDir.Name);
tn.Checked = true;
if (SearchPath(subDir, tn.Nodes) > 0)
{
root.Add(tn);
fileCnt++;
}
}
foreach (FileInfo DfmFile in workingDir.GetFiles("*.dfm"))
{
TreeNodePlus tn = new TreeNodePlus(DfmFile.Name);
tn.Checked = true;
tn.Entry = new DfmEntry(DfmFile.FullName);
root.Add(tn);
fileCnt++;
}
return fileCnt;
}
- Parameter & Variablen klein (okay DfmFile nicht fällt mir gerade auf)
- Ein Bug behoben, dass Dateien in "tieferen" Ordnern, übersprungen wurden
- Kein Pfad sondern ein DirectoryInfo Objekt (das ändert auch den Aufruf unten: SearchPath(new DirectoryInfo(SelPath + "\\"), Root.Nodes);)
[/edit]
Zum Eigentlichen Thema. Also ich habe das jetzt so (wahrscheinlich nicht gerade hübsch ^^ aber es geht erstmal) gelöst:
Code:
private void BWThread_DoWork(object sender, DoWorkEventArgs e)
{
TreeNode Root = new TreeNode();
SearchPath(SelPath + "\\", "", Root.Nodes);
e.Result = Root;
}
private void BWThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Thread ist fertig: Ladebalken raus, Einträge eintragen :P
TVTree.BeginUpdate();
try
{
TreeNode ThreadRoot = (TreeNode)e.Result;
TVTree.Nodes.Clear();
foreach (TreeNode node in ThreadRoot.Nodes)
{
TVTree.Nodes.Add(node);
}
TVTree.Enabled = true;
}
finally
{
PLoading.Hide();
TVTree.EndUpdate();
}
}
MfG
xZise