2013-12-12 202 views
0

當FolderBrowserDialog出現時,我按下關閉按鈕或取消按鈕,它會顯示一條錯誤消息。我需要做什麼?如何防止FolderBrowserDialog崩潰?

謝謝。

這是我的代碼。

private void openSlideShowFolder_Click(object sender, EventArgs e) 
{ 
    folderBrowserDialog1.ShowDialog(); 
    string[] pics1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpg"); 
    string[] pics2 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpeg"); 
    string[] pics3 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.bmp"); 
    folderFile = new string[pics1.Length + pics2.Length + pics3.Length]; 
    Array.Copy(pics1, 0, folderFile, 0, pics1.Length); 
    Array.Copy(pics2, 0, folderFile, pics1.Length, pics2.Length); 
    Array.Copy(pics3, 0, folderFile, pics1.Length + pics2.Length, pics3.Length); 
    selected = 0; 
    showImage(folderFile[selected]); 
} 
+0

當它爲空時沒有捕獲到SelectedPath。在這種情況下,SelectedPath爲空,我相信您已將它分配給 – HICURIN

+1

1)向我們顯示調用對話框的代碼,2)請複製並粘貼您收到的錯誤消息的文本。 –

+0

@hicurin:我不認爲這是OP的問題,因爲OP說它在點擊close,cancel按鈕時崩潰。 –

回答

2

如前所述,您需要知道對話框是否返回OK。看看是否有幫助:

private void openSlideShowFolder_Click(object sender, EventArgs e) 
{ 
    if(folderBrowserDialog1.ShowDialog() == DialogResult.OK) 
    { 
    string[] pics1 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpg"); 
    string[] pics2 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.jpeg"); 
    string[] pics3 = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.bmp"); 
    folderFile = new string[pics1.Length + pics2.Length + pics3.Length]; 
    Array.Copy(pics1, 0, folderFile, 0, pics1.Length); 
    Array.Copy(pics2, 0, folderFile, pics1.Length, pics2.Length); 
    Array.Copy(pics3, 0, folderFile, pics1.Length + pics2.Length, pics3.Length); 
    selected = 0; 
    showImage(folderFile[selected]); 
    } 
} 
+0

如果您有需要的答案,請將其標記爲已回答。謝謝。 – tinstaafl

1

ShowDialog的文檔顯示它給出了一個結果,告訴你用戶是否單擊了OK。你的代碼假設用戶總是點擊確定,不管結果如何,它都會繼續。您需要檢查返回值,並且只有在DialogResult.OK時纔會繼續。

如果您確實繼續操作,即使用戶單擊了「取消」或「關閉」,但本來應該始終有效的幾個假設可能不成立。特別是,用戶沒有選擇任何路徑,因爲用戶沒有選擇任何東西。