2017-03-18 55 views
1

非常直截了當。按下按鈕,從對話框中選擇一個路徑,搜索路徑的子目錄,並將它們顯示在消息框中。但遇到了幾個問題。如何解決這個小問題(可能很簡單)DirectoryInfo語法錯誤?

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 - 爲什麼我得到這個語法錯誤
乙 - 它爲什麼被從路徑返回父目錄,而不是子目錄

,那麼你會成爲英雄。非常感謝

PS我完全不熟悉編程,也不知道枚舉/枚舉是什麼,所以如果它有什麼關係,我會很感激可能是一個小例子或什麼背景是。

回答

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(); 
0

靜態類將是Directory

Directory.GetDirectories(path); 

前這兩條線也沒用......

Path.GetDirectoryName(fbd.SelectedPath); 
string path = Path.GetDirectoryName(fbd.SelectedPath); 

下一件事情:我不明白,環...你想用Length+1>=0達到什麼目的? 要打印出任何列表/數組的所有目錄,您有兩個選擇:A 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); 
    } 

希望這會有所幫助。

+0

在閱讀時,我瞭解到,您可以從頭到尾以長度爲1開始向後索引數組。我認爲長度+ 1是陣列的開始。 重寫代碼很有幫助謝謝。但是,我也想弄清楚如何使用DirectoryInfo類。更具體地說,DirectoryInfo.GetDirectories與Directories類不同。我認爲有人回答了這個問題。它需要被實例化。 – Aspen

相關問題