非常直接。按一个按钮,从对话框中选择一个路径,搜索路径的子目录,并在消息框中显示它们。但是遇到了几个问题。
private void InputButton_Click(object sender, RoutedEventArgs e)
{
//CHECKS TO SEE IF "OK" WAS CLICKED IN DIALOGBOX
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
}
//SELECTS DIRECTORY PATH
Path.GetDirectoryName(fbd.SelectedPath);
string path = Path.GetDirectoryName(fbd.SelectedPath);
InputDirectory_Box.Text = path;
//SELECTS SUBDIRECTORIES FROM PATH
string[] subdirectories = DirectoryInfo.GetDirectories(path);
for (int i = 0; subdirectories.Length+1 >= 0; i++)
{
MessageBox.Show(subdirectories[i]);
}
}
行string[] subdirectories = DirectoryInfo.GetDirectories(path);
表示它需要非静态字段的对象引用。我已经声明path
给它搜索字符串。我对Directory类(而不是DirectoryInfo
类)使用了完全相同的代码和语法,这是合法的。但是,使用Directory.GetDirectories
时出现问题。由于某种原因,它找到了路径的父目录,而不是subdirectories
。
如果有人能说出一些亮点:
A - 为什么我收到此语法错误
B - 为什么它从路径中返回父目录而不是子目录
然后你会成为英雄。非常感谢
PS我对编程完全不熟悉,并且不知道枚举/枚举是什么,所以如果它与它有关,我会欣赏它可能是一个小例子或它的背景。< / p>
答案 0 :(得分:1)
GetDirectories是一种实例方法。您需要有DirectoryInfo
的实例才能使用它。
string path = fbd.SelectedPath;
// Make a reference to a directory.
DirectoryInfo di = new DirectoryInfo(path);
// Get a reference to each directory in that directory.
string[] subdirectories = di.GetDirectories();
答案 1 :(得分:0)
静态类将为Directory
Directory.GetDirectories(path);
这两行中的第一行无用......
Path.GetDirectoryName(fbd.SelectedPath);
string path = Path.GetDirectoryName(fbd.SelectedPath);
接下来的事情:我不理解那个循环......你想用Length+1>=0
做什么?
要打印出任何列表/数组的所有目录,您有两个选择:for
循环,如果您不需要项目的索引,则更好一个foreach
循环。
看看这些例子:
string[] subdirectories = Directory.GetDirectories(path);
for (int i = 0; i < subdirectories.Length; i++)
{
MessageBox.Show(subdirectories[i]);
}
string[] subdirectories = Directory.GetDirectories(path);
foreach (string directory in subdirectories)
{
MessageBox.Show(directory);
}
希望这会有所帮助。