문제

사용자에게 특정 파일을 탐색하고 해당 파일 위치를 저장 한 다음 텍스트 상자에서 문자열을 작성하도록 요청하려면 응용 프로그램이 필요합니다.

그러나 파일을 탐색하려면 최종 사용자 만 필요합니다. 처음으로 응용 프로그램이 시작됩니다. 한 번만.

여기에 내 딜레마가 있습니다. 어떻게 내 응용 프로그램을 가질 수 있습니까? 기억하다 처음 출시 된 경우?

도움이 되었습니까?

해결책

파일이 아닌 폴더를 원하지만 요점 외에는 폴더를 원한다고 생각합니다.

사용자 설정 (프로젝트 속성, 설정 참조)을 사용하여 빈 또는 유효하지 않은 값으로 배포 할 수 있습니다. 설정에서 유효하지 않은 값을 읽을 때만 대화 상자를 시작합니까?

이것은 사용자 당입니다.

.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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top