Frage

Ich brauche meine Anwendung die Benutzer zu bitten, eine bestimmte Datei zu suchen, speichern, dass Dateien Standort und anschließend eine Zeichenfolge aus einem Text schreiben.

Ich brauche aber nur meine Endbenutzer das erste Mal , um die Anwendung gestartet, um die Datei zu suchen. Nur ein einziges Mal.

Hier ist mein Dilemma liegt, wie kann ich meine Bewerbung habe merken , wenn es das erste Mal ist es gestartet?

War es hilfreich?

Lösung

Ich glaube, Sie einen Ordner mögen, nicht eine Datei, aber das ist neben dem Punkt.

Sie können einen Benutzereinstellung verwenden (siehe Projekteigenschaften, Einstellungen) und stellen Sie sie mit einem leeren oder ungültigen Wert. Nur wenn Sie den ungültigen Wert von Einstellungen lesen wollen Sie das Dialog starten.

Dies ist auf einer Per-User-Basis.

können Sie die Registrierung in .NET verwenden, aber Sie wollen wirklich weg wie möglich von dieser so viel zu tun hat. Die Tatsache, dass die Bibliothek nicht in einem Namespace System ist ein Indikator.

Andere Tipps

Speichern Sie die Datei in der Registrierung ausgewählt, oder in einer Konfigurationsdatei in dem Benutzer Ordner Dokumenten und Einstellungen.

Um zu Ihrem lokalen Programm des Weg zu bekommen, verwenden Sie:

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

Ich würde die Registrierung verwenden, um einen Eintrag für „SavedFileLocation“ für Ihre Anwendung hinzuzufügen.

Eine praktische Einführung der Registrierung auf, überprüfen Sie hier .

Dann können Sie überprüfen, ob der Schlüssel vorhanden ist, wenn nicht den Dialog präsentieren.
Wenn der Schlüssel vorhanden ist, sollten Sie auf die Existenz der Datei überprüfen. Wenn die Datei nicht existiert, sollten Sie vielleicht diese Informationen für den Benutzer darstellen, und sie fragen, ob sie eine neue Datei dort erstellen möchten, oder einen neuen Standort wählen.
Ansonsten nimmt diesen Wert und hält es für Laufzeit.

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top