2010-07-21 5 views
3

나는 두 가지 형태로 경로를 검색하는 코드를 가지고 있습니다. 한 양식에서 파일을 열고 처리 할 경로를 선택하면 다른 양식으로 돌아갈 때 Direcotry 예외 오류가 발생합니다. 내가 전화 내 첫 번째 양식에경로가 변경되는 이유

 string strFilePath2; 
     strFilePath2 = Directory.GetCurrentDirectory(); 
     strFilePath2 = Directory.GetParent(strFilePath2).ToString(); 
     strFilePath2 = Directory.GetParent(strFilePath2).ToString(); 
     strFilePath2 = strFilePath2 + "\\ACH"; 

: 나는이라는 두 번째 양식에서 해당 경로

를 얻기 위해 다른 문자열로 사용 디버깅하는 동안

 strFilePath = Directory.GetCurrentDirectory(); 
     strFilePath = Directory.GetParent(strFilePath).ToString(); 
     strFilePath = Directory.GetParent(strFilePath).ToString(); 
     strFilePath = strFilePath + "\\ACH\\" + Node; 

, 내가 선택한 얻고있다 두 번째 형식의 경로는 아니지만 예상 한 경로는 아닙니다. 왜 아무 한테 말해 줄 수 있니?

+0

질문에 예외를 넣으십시오. –

답변

8

현재 디렉토리의 값을 확인 했습니까?

OpenFileDialog은 일반적으로 현재 디렉토리를 변경합니다. 당신은 RestoreDirectory 속성을 사용하여 해당 동작을 제어 할 수 있습니다 : AS를

OpenFileDialog ofd = new OpenFileDialog(); 

ofd.RestoreDirectory = true ; // this will not modify the current directory 

를 제외하고, 당신은 당신의 코드 샘플에서 경로을 연결합니다. .NET에서는 정적 Path.Combine 메서드를 사용하는 것이 가장 좋습니다. 하나를 삽입이없는 경우이 방법은 백 슬래시 (또는 무엇이든 시스템의 경로 분리 문자가) 자동의 존재를 확인합니다 :

strFilePath = Path.Combine(strFilePath, "ACH"); 
3

종종 이것은 FolderBrowserDialog, OpenFileDialog 또는 이와 유사한 호출에 따라 달라집니다. 이 대화 상자 (및 다른 구성 요소)는 실행중인 응용 프로그램의 작업 디렉토리를 자동으로 변경합니다.

사용자 충고가있는 경우 상대 pathes를 사용하지 않는 것이 좋습니다.

+0

Openfiledialog를 사용하고 있습니다. 어떻게해야할까요? – Dotnet

+0

마크의 좋은 설명을 참조하십시오 :-) –

3

OpenFileDialogSaveFileDialog 변화에게 매우 성가신 현재 작업 경로를. 이 파일을 수동으로 다시 설정하거나 .RestoreDirectory = true;으로 설정하여 파일을 선택한 후 다시 바꿀 수 있습니다. FolderBrowserDialog을 사용하는 경우이 문제가 계속 발생하면 수동으로 수행해야합니다.

관련 문제