2017-12-19 5 views
1

FolderBrowserDialog을 사용하여 파일을 저장할 위치를 선택하거나 새 폴더를 만들 수 있습니다. 99 %의 시간 동안 작동하지만 일부 경우에는 사용자가 새 폴더 만들기 버튼을 클릭하고 이름을 변경 한 다음 "새 폴더"가 존재하지 않는 예외가 발생합니다.파일 저장 위치 항상 업데이트되지 않음

사용자가 이름을 변경했지만 코드에서 "새 폴더"라는 이름의 폴더를 찾고있는 것 같습니다. 파일이 항상 사용자가 선택한 폴더에 저장되도록이 문제를 처리하기 위해 코드에서 무엇을 변경할 수 있습니까?

//Declaring Filename 
FolderBrowserDialog folderDlg = new FolderBrowserDialog(); 
folderDlg.ShowNewFolderButton = true; 
folderDlg.Description = "Choose the location to save Files"; 
DialogResult result = folderDlg.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    savelocation = folderDlg.SelectedPath; 
} 

// Choose whether to write header. Use EnableWithoutHeaderText instead to omit header. 
dataGridExport.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; 
// Select all the cells 
dataGridExport.SelectAll(); 
// Copy selected cells to DataObject 
DataObject dataObject = dataGridExport.GetClipboardContent(); 
// Get the text of the DataObject, and serialize it to a file 
File.WriteAllText(savelocation + "\\ExcelExport.csv", dataObject.GetText(TextDataFormat.CommaSeparatedValue)); 
+0

@CaiusJard - 사용자가 저축을 선택하도록 허용하는 대체 방법이 있습니까 양이온? –

+1

BTW에서는 항상 Path.Combine을 사용하여 파일 경로를 만듭니다. – LarsTech

+0

대화 상자의 결과가'DialogResult.OK'가 아닌 경우를 처리 할 코드가 없기 때문에 다른'DialogResult' 때문에'savelocation'의 기본값이 사용되면 문제가 발생할 수 있습니까? – 0liveradam8

답변

2

코드에 버그가있는 것은 아닙니다. 사용자가 FBD 내부에 새 폴더를 만들고 FBD가 경로를 ...\new folder으로 캡처하고 사용자가 다시 이름을 변경하고 이름을 변경 한 다음 다시 클릭하지 않거나 클릭하여 다시 클릭하면 FBD가 실현됩니다. 이름이 바뀌 었습니다. 당신의 결함/문제가 아닙니다. PEBKAC/PICNIC. FBD를 사용하는 모든 Windows 소프트웨어는이 문제를 겪고 있습니다.

FBD는 끔찍한 일이므로 사용하지 마십시오 (경로를 붙여 넣기 만하면됩니다 .. 마우스를 사용하여 많은 디렉토리를 탐색해야합니다. FBD에 의해 선택된 초기 디렉토리가 기본값으로 리셋 될 때 더 짜증나게합니다. 예 : 사용자가 마지막으로 선택한 것과 거의 비슷하지 않은 경우)

대신에 OpenFileDialog를 사용하고 저장하기 위해 파일 이름을 묻는 메시지를 표시하거나 How do you configure an OpenFileDialog to select folders?과 같은 SO 질문을보고 FBD의 한계를 극복하기 위해 사람들이 한 일을 보았습니다.

+0

사용자가 저장 위치를 ​​선택하기를 원합니다. 나는 그들에게 파일 이름을 입력 할 수있게하고 싶지 않다. FBD를 사용하는 것이 사용자에게 유리하다고 생각할 때, 나는 –

+1

을 알고있다. FBD를 사용하는 몇 가지 소프트웨어를 사용하고 사용자 경험이 얼마나 힘든 지 직접 확인해 보시기 바랍니다. 당신이 그것을 사용하는 고통을 통해 사용자를 넣어하지 마십시오. OFD를 사용하는 방법을 찾으십시오. (사용자가 자신의 이름 대신 자신의 이름을 원한다면 정말로 신경 써야합니까?) 또는 파워 유저에게 경로를 붙여 넣을 텍스트 상자를 제공하십시오 (끔찍한 일은 FBD를 극복하기위한 것입니다. 오리 계란 사용자의 경우) FBD에서 텍스트 상자를 저장 경로로 업데이트 한 다음 새 폴더 문제를 수정하십시오. –

+0

흠 - 나는 FBD가 너무 두려운 것을 깨닫지 못했습니다. 사용자가 파일 경로를 입력 할 수 있도록 텍스트 상자 또는 형식화 된 winform 아이디어가 마음에 들었습니다. –