以下のコードで使用Path.GetFileName()
すると、意図したとおりに機能し、正しいフォルダーの名前が返されることがわかりましたが、使用するPath.GetDirectoryName()
と、代わりに親 (UserGeneratedContent) フォルダーの名前が返されます。両方のメソッドに同じパスが文字列として渡されると、なぜこれが発生するのですか? そして、なぜPath.GetFileName()
ディレクトリで機能するのですか?
Treeview でノードのテキストを使用するPath.GetFileName()
と、見つかったフォルダーのテキストになります。これは私がやりたいことですが、テキストを使用すると、 @"UserGeneratedContent"から各ノードPath.GetDirectoryName()
のフル パスになります。なぜそれが起こるのですか?
最後に、コードを改善できますか?
private void CheckForBaseFolder()
{
if (Directory.Exists(@"UserGeneratedContent"))
{
DirectoryInfo info = new DirectoryInfo(@"UserGeneratedContent");
DirectoryInfo[] subdirs = info.GetDirectories();
if (subdirs.Length != 0)
{
string path = Path.Combine(@"UserGeneratedContent", subdirs[0].ToString());
treeView1.Nodes.Add(CheckForSubFolders(path));
treeView1.SelectedNode = treeView1.Nodes[0];
}
else { MessageBox.Show("No User-Generated Folders Or Files Found"); }
}
else { Directory.CreateDirectory(@"UserGeneratedContent"); }
}
private TreeNode CheckForSubFolders(string path)
{
TreeNode folder = new TreeNode(path);
folder.Text = Path.GetFileName(path); // Works as intended, but.....
folder.Text = Path.GetDirectoryName(path); // Returns the parent folder
foreach(var subdirectory in Directory.GetDirectories(path))
{
folder.Nodes.Add(CheckForSubFolders(subdirectory));
}
folder.ImageIndex = 0;
folder.SelectedImageIndex = 1;
return folder;
}