문제
사용자에게 특정 파일을 탐색하고 해당 파일 위치를 저장 한 다음 텍스트 상자에서 문자열을 작성하도록 요청하려면 응용 프로그램이 필요합니다.
그러나 파일을 탐색하려면 최종 사용자 만 필요합니다. 처음으로 응용 프로그램이 시작됩니다. 한 번만.
여기에 내 딜레마가 있습니다. 어떻게 내 응용 프로그램을 가질 수 있습니까? 기억하다 처음 출시 된 경우?
해결책
파일이 아닌 폴더를 원하지만 요점 외에는 폴더를 원한다고 생각합니다.
사용자 설정 (프로젝트 속성, 설정 참조)을 사용하여 빈 또는 유효하지 않은 값으로 배포 할 수 있습니다. 설정에서 유효하지 않은 값을 읽을 때만 대화 상자를 시작합니까?
이것은 사용자 당입니다.
.NET에서 레지스트리를 사용할 수 있지만 가능한 한 그대로 멀리 떨어져 있기를 원합니다. 라이브러리가 시스템 네임 스페이스에 없다는 사실은 표시기입니다.
다른 팁
레지스트리 또는 사용자의 문서 및 설정 폴더의 구성 파일에 선택한 파일을 저장하십시오.
지역 프로그램의 경로에 도달하려면 다음을 사용하십시오.
string path = Environment.GetFolderPath(Environment.LocalApplicationData);
레지스트리를 사용하여 응용 프로그램에 "SaveDfilelocation"항목을 추가합니다.
레지스트리 사용에 대한 자습서는 확인하십시오 여기.
그런 다음 대화 상자를 제시하지 않으면 키가 존재하는지 확인할 수 있습니다.
키가 존재하는 경우 파일의 존재를 확인해야합니다. 파일이 존재하지 않으면이 정보를 사용자에게 제시하고 새 파일을 만들거나 새 위치를 선택할 것인지 묻습니다.
그렇지 않으면 그 값을 가져 와서 런타임을 유지하십시오.
암호:
AppInitialization()
{
RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
@"Software\YourName\YourApp"
?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );
this.fileLocation = appKey.GetValue( "SavedFileLocation" )
?? GetLocationFromDialog()
?? "DefaultFileInCurrentDirectory.txt";
}
private static string GetLocationFromDialog()
{
string value = null;
RegistryKey appKey = Registry.CurrentUser.OpenSubKey(
@"Software\YourName\YourApp"
?? Registry.CurrentUser.CreateSubKey( @"Software\YourName\YourApp" );
using( OpenFileDialog ofd = new OpenFileDialog() )
{
if( ofd.ShowDialog() == DialogResult.OK )
{
value = ofd.File;
appKey.SetValue( "SavedFileLocation", value );
}
}
return value;
}