Вопрос

Мне нужно, чтобы мое приложение просило пользователя перейти к определенному файлу, сохранить местоположение этого файла и впоследствии записать в него строку из текстового поля.

Однако мне нужно, чтобы конечный пользователь только нашел файл, который первый раз приложение запускается.Только один раз.

Вот моя дилемма: как мне получить свое заявление? помнить если бы это был первый запуск?

Это было полезно?

Решение

Я думаю, вам нужна папка, а не файл, но это не главное.

Вы можете использовать UserSetting (см. Свойства проекта, Настройки) и развернуть его с пустым или недопустимым значением.Диалог запускается только тогда, когда вы читаете неверное значение из настроек.

Это для каждого пользователя.

Вы можете использовать реестр в .NET, но вам действительно следует избегать этого, насколько это возможно.Тот факт, что библиотека не находится в пространстве имен System, является индикатором.

Другие советы

Сохраните выбранный файл в реестре или в файле конфигурации в папке «Документы и настройки» пользователя.

Чтобы перейти к пути вашей локальной программы, используйте:

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