2013-12-12 5 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

null이되면 SelectedPath를 잡을 수 없습니다. 이 경우 SelectedPath가 null이고 뭔가를 할당했다고 확신합니다. – HICURIN

+1

1) 대화 상자를 호출하는 코드를 표시하십시오. 2) 가져 오는 오류 메시지의 텍스트를 복사하여 붙여 넣으십시오. –

+0

@hicurin : 나는 그것이 OP의 문제라고 생각하지 않는다. OP는 닫기를 클릭했을 때 추락했다는 것을 말하고 취소 버튼을 클릭한다. –

답변

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 인 경우에만 계속해야합니다.

사용자가 취소 또는 닫기를 클릭하더라도 계속 수행하면 항상 유효해야하는 몇 가지 가정이 유지되지 않을 수 있습니다. 특히 사용자가 아무것도 선택하지 않았기 때문에 사용자가 선택한 경로가 없습니다.

관련 문제