当我想要递归任何文件夹的完整结构时,我正在使用Shell32,它可以连接到字母驱动器c:\;d:\ etc和没有字母的连接设备,如安卓平板电脑。
我的问题是我不能将文件夹从FolderItem解压到递归。
谢谢。
Using Shell32; // reference browse to c:\Windows\System32\shell32.dll
class x
{
public int Hwnd { get; private set; }
public void ListAllFolderObjects()
{
Shell32.Shell shell = new Shell32.Shell();
Folder folder = shell.BrowseForFolder((int)Hwnd, "Choose Folder", 0, 0);
if (folder != null)
GetFolderObjects(folder);
}
private void GetFolderObjects(Folder folder)
{
foreach (FolderItem currentItem in folder.Items())
{
// a
string sType = currentItem.Type;
string sName = currentItem.Name;
if (sType == "folder")
{
// problem here - cannot get a folder from currentItem
// how do I cast FolderItem to Folder???????
GetFolderObjects(currentItem); // recurse
}
}
}
// from main
ListAllFolderObjects();发布于 2018-04-04 03:04:45
通过使用以下方法解决问题:
currentItem.GetFolder as Folder发布于 2018-04-05 03:05:37
您必须对currentfolder对象进行显式强制转换,如下所示
Using Shell32; // reference browse to c:\Windows\System32\shell32.dll
class x
{
public int Hwnd { get; private set; }
public void ListAllFolderObjects()
{
Shell32.Shell shell = new Shell32.Shell();
Folder folder = shell.BrowseForFolder((int)Hwnd, "Choose Folder", 0, 0);
if (folder != null)
GetFolderObjects(folder);
}
private void GetFolderObjects(Folder folder)
{
foreach (FolderItem currentItem in folder.Items())
{
// a
string sType = currentItem.Type;
string sName = currentItem.Name;
if (sType == "folder")
{
Folder f = (Folder)currentItem.GetFolder; //cast object
GetFolderObjects(f); // recurse
}
}
}
// from main
ListAllFolderObjects();https://stackoverflow.com/questions/49620021
复制相似问题