Question

Je dois ma demande de demander à l'utilisateur pour accéder à un fichier particulier, sauf que l'emplacement des fichiers, puis écrire une chaîne à partir d'une zone de texte à lui.

Cependant, je ne ai besoin de mon utilisateur final pour accéder au fichier première fois les lancements d'application. Une seule fois.

Ici se trouve mon dilemme, comment puis-je avoir ma demande RAPPELEZ si elle était la première fois qu'il a lancé?

Était-ce utile?

La solution

Je pense que vous voulez un dossier, pas un fichier, mais qui est d'ailleurs le point.

Vous pouvez utiliser un UserSetting (Voir Propriétés du projet, les paramètres) et le déployer avec une valeur vide ou non valide. Seulement lorsque vous lisez la valeur non valide de paramètres que vous commencez à faire la boîte de dialogue.

est sur une base par utilisateur.

Vous pouvez utiliser le Registre dans .NET mais vous voulez vraiment rester loin de cela autant que possible. Le fait que la bibliothèque n'est pas dans un espace de noms System est un indicateur.

Autres conseils

Enregistrez le fichier sélectionné dans le registre ou dans un fichier de configuration dans les documents de l'utilisateur et le dossier Paramètres.

Pour accéder au chemin de votre programme local, utilisez:

string path = Environment.GetFolderPath(Environment.LocalApplicationData);

J'utiliser le Registre pour ajouter une entrée pour « SavedFileLocation » pour votre application.

Pour un tutoriel sur l'utilisation du Registre, vérifiez .

Ensuite, vous pouvez vérifier si la clé existe, si elle est présente pas la boîte de dialogue.
Si la clé existe, vous devriez vérifier l'existence du fichier. Si le fichier n'existe pas, vous devriez probablement présenter ces informations à l'utilisateur, et demandez-leur si elles veulent créer un nouveau fichier là, ou choisir un nouvel emplacement.
Sinon, prenez cette valeur et la conserver pour l'exécution.

CODE:

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top