Pergunta

Eu preciso da minha aplicação para perguntar ao usuário navegar para um arquivo particular, a ressalva de que arquivos local e, posteriormente, escrever uma seqüência de caracteres de uma caixa de texto a ele.

No entanto, eu só preciso do meu usuário final para navegar para o arquivo o primeira vez o aplicativo é iniciado. Apenas uma vez.

Aqui reside o meu dilema, como posso ter a minha candidatura RECORDE se fosse a primeira vez que foi lançado?

Foi útil?

Solução

Eu acho que você quer uma pasta, não um arquivo, mas isso é além do ponto.

Você pode usar um UserSetting (propriedades consulte Project, Configurações) e implantá-lo com um valor vazio ou inválido. Só quando você lê o valor inválido de configurações que você iniciar o diálogo.

Este é em uma base por usuário.

Você pode usar o Registro no .NET, mas você realmente quer ficar longe de que, tanto quanto possível. O fato de que a biblioteca não está em um namespace System é um indicador.

Outras dicas

Salve o arquivo escolhido no Registro ou em um arquivo de configuração em documentos do usuário e pasta Configurações.

Para chegar ao caminho do seu programa local, use:

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

Gostaria de usar o Registro para adicionar uma entrada para "SavedFileLocation" para sua aplicação.

Para um tutorial sobre como usar o Registro, verifique aqui .

Em seguida, você pode verificar se a chave existir, se não apresentar o diálogo.
Se a chave existir, você deve verificar se há existência do arquivo. Se o arquivo não existir, você provavelmente deve apresentar esta informação para o usuário, e perguntar-lhes se eles querem criar um novo arquivo lá, ou escolher um novo local.
Caso contrário, dar esse valor e mantê-lo por tempo de execução.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top