Pregunta

Necesito mi solicitud para pedir al usuario navegar a un archivo en particular, salvo que los archivos de localización y posteriormente escribir una cadena de un cuadro de texto a la misma.

Sin embargo, sólo necesito mi usuario final para buscar el archivo de la primera vez se inicia la aplicación. Sólo una vez.

Aquí yace mi dilema, ¿cómo puedo tener mi solicitud recuerde si era la primera vez que se puso en marcha?

¿Fue útil?

Solución

Creo que quieres una carpeta, no un archivo, pero eso no viene al caso.

Puede utilizar un UserSetting (Ver Propiedades del proyecto, Ajustes) y desplegarlo con un valor vacío o no válido. Sólo cuando se lee el valor no válido de ajustes hay que inicie el diálogo.

Esto es sobre una base por usuario.

Puede utilizar el Registro en .NET, pero que realmente quiere quedarse fuera de eso tanto como sea posible. El hecho de que la biblioteca no está en un espacio de nombres System es un indicador.

Otros consejos

Guarde el archivo seleccionado en el registro, o en un archivo de configuración en los documentos del usuario y la configuración de carpetas.

Para llegar a la trayectoria de su programa local, utilice:

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

Me gustaría utilizar el registro para agregar una entrada para "SavedFileLocation" para su aplicación.

Para obtener un tutorial sobre el uso del registro, verificación aquí .

A continuación, se puede comprobar si existe la clave, si no está presente el diálogo.
Si existe la clave, usted debe comprobar la existencia del archivo. Si no existe el archivo, probablemente debería presentar esta información al usuario, y les pregunta si quieren crear un nuevo archivo de allí, o elegir una nueva ubicación.
De lo contrario, tomar ese valor y mantenerlo durante el tiempo de ejecución.

CÓDIGO:

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top