2017-04-18 3 views
2

問題を永続化するApp.configファイルの設定を取得できません:アプリケーションに保存されているとどまることをユーザが設定した値:初期起動時にユーザが設定した値は、App.configファイルのXMLで

目的の機能に滞在しません.configユーザーが変更しない限り

私は、プログラムで作成したファイルが保存されるフォルダをユーザーがアプリケーションを初めて実行するようにしています。その文字列をApp.configに格納して、一度しか設定しないでください。現時点では、それを設定してメモリに保持しますが、プログラムが終了すると値が失われます。 .save()メソッドを呼び出すと解決すると思っていましたが、それはありませんでした。フォーム開度に :

if (ConfigurationManager.AppSettings["SaveFilePath"] == null) 
{ 
    FolderBrowserDialog fbd1 = new FolderBrowserDialog(); 
    fbd1.RootFolder = Environment.SpecialFolder.MyComputer; 
    fbd1.Description = "Select a folder to save to:"; 
    fbd1.ShowNewFolderButton = true; 

    if (fbd1.ShowDialog() == DialogResult.OK) 
    { 
     Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     config.AppSettings.Settings.Add("SaveFilePath", fbd1.SelectedPath); 
     config.Save(); 

     ConfigurationManager.RefreshSection("appSettings"); 
    } 
} 
+0

はapp.configをに意図されていないを使用してプロジェクトにまだ生きています永続的なストレージソリューションとなります。これらのオプションを別の方法、例えばsettings.jsonに永続させることを検討する必要があります。 – maccettura

答えて

1

は、一つには、ユーザー設定を格納および取得するために(プロジェクトのプロパティページでそれを参照してください)アプリケーションの設定ファイルを使用する必要があります。

Using Settings in C#を参照してください。 ページはVS 2005を示し、それはVS 2017


enter image description here

+0

これは素晴らしいですね。私は記事を辿り、パスを保持する新しい設定を作成しました。私は 'Properties.Settings.Default.defaultFilePath ==" C:\\ "'をチェックするためにif条件を置き換えましたが、うまくいきません。実行時に「userSettings '要素のスキーマ情報が見つかりませんでした」という情報メッセージが表示されます。何が私が逃した構成する必要がありますか? –

+0

@BrettMinster他に何かが起こっていて、これは明らかではありません。私は多くのプロジェクトでユーザープロジェクト設定を使用しました。私はあなたがそこにそれを試してコンソールアプリケーションを作成することをお勧めします。それがうまくいけば、メインのものに問題があります。そうでない場合は、この例をここに戻してSOに送信することができます。ビルドするたびに、ユーザ設定は 'install'状態に上書きされ、保存されません。 – OmegaMan

+0

私が持っていた問題はコードのどこかにありました。値を適切に保存し、必要に応じてユーザーが変更することができます。私はまだエラーコンソールに表示されるメッセージを解決できませんでしたが、正常に動作し、実際のエラーや警告ではありません。ありがとう! –