2009-08-15 9 views
1

J'ai besoin de mon application pour demander à l'utilisateur de naviguer dans un fichier particulier, de sauvegarder l'emplacement de ces fichiers et d'y écrire ensuite une chaîne depuis un TextBox.Enregistrement du chemin de fichier d'un fichier .txt

Cependant, j'ai seulement besoin de mon utilisateur final pour parcourir le fichier la première fois l'application se lance. Juste une fois.

Voici mon dilemme, comment puis-je avoir mon application rappelez-vous si c'était la première fois qu'il a lancé? Enregistrez le fichier choisi dans le registre ou dans un fichier de configuration dans le dossier Documents and Settings de l'utilisateur.

Répondre

6

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

Vous pouvez utiliser un paramètre UserSetting (voir Propriétés du projet, Paramètres) et le déployer avec une valeur vide ou non valide. Ce n'est que lorsque vous lisez la valeur non valide des paramètres que vous démarrez la boîte de dialogue.

Cela dépend de l'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 ne se trouve pas dans un espace de noms System est un indicateur.

+0

Je pense que le fichier a du sens. OP se souvient d'un fichier à ajouter/écrire. – maxwellb

+0

Vos suggestions semblent très solides, mais c'est chinois pour moi! Je ne sais pas ce que vous entendez par "déployer avec une valeur vide ou invalide". Vous voulez élaborer un peu? –

+1

jetez un oeil à http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx pour plus d'informations sur les paramètres de l'utilisateur. Jetez un oeil à http://msdn.microsoft.com/en-us/library/wabtadw6.aspx pour plus d'informations sur l'utilisation du concepteur pour les gérer. –

0

Pour obtenir au chemin de votre programme local, utilisez:

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

Comment est-ce que je ferais ceci? –

+0

Voilà, exemple en place! –

0

Je voudrais utiliser le Registre pour ajouter une entrée pour « SavedFileLocation » pour votre application.

Pour un didacticiel sur l'utilisation du registre, vérifiez here.

Ensuite, vous pouvez vérifier si la clé existe, sinon présentez la boîte de dialogue.
Si la clé existe, vous devez vérifier l'existence du fichier. Si le fichier n'existe pas, vous devez probablement présenter cette information à l'utilisateur et lui demander s'il souhaite créer un nouveau fichier ou choisir un nouvel emplacement.
Sinon, prenez cette valeur et conservez-la 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; 
} 
+0

Ok, ce n'est pas "Si c'est la première fois que l'application est lancée", mais c'est "Si je me souviens d'un emplacement 'valide'." Vous pouvez l'adopter pour enregistrer un paramètre de "NotFirstTime" existe/n'existe pas. – maxwellb