これが私が使用しているコードです:
private void SaveConfiguration()
{
if (txtUsername.Text != "" && txtPassword.Text != "")
{
ConfigurationManager.AppSettings["Username"] = txtUsername.Text;
ConfigurationManager.AppSettings["Password"] = txtPassword.Text;
MessageBox.Show("Su configuracion guardo exitosamente.", "Exito!");
this.Close();
}
else
{
MessageBox.Show("Por favor lleno los campos.", "Error.");
}
}
これで設定は保持されますが、アプリケーションを閉じてF5キーを押して再度実行すると、値はapp.configファイルに入力された値に戻ります。助言がありますか?
Saveメソッドを呼び出す必要があると思います
ConfigurationManager.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
[〜#〜]編集[〜#〜]
保存できるようにするには、OpenExeConfigurationメソッドによって返される構成オブジェクトを使用する必要があります
//Create the object
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//make changes
config.AppSettings.Settings["Username"].Value = txtUsername.Text;
config.AppSettings.Settings["Password"].Value = txtPassword.Text;
//save to apply changes
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
その他の参照はこちら ConfigurationManagerクラス
F5でアプリケーションを実行すると、
bin
またはbin\Debug
サブディレクトリにコピーされます。app.config
はyourexecutable.exe.config
としてそのディレクトリにコピーされ、したがって、アプリケーションはbin
またはyourexecutable.exe.config
ディレクトリのbin\Debug
を使用し、ConfigurationManager
が変更を保存するのはそこにです。ソースコードディレクトリにあります。これは、アプリケーションをデプロイした後は問題になりません。そうすると、変更はデプロイメントディレクトリのyourexecutable.exe.config
に移動します。これは、必要なものです。
2番目の答えに関するAppetereのコメントに加えて:
また、デバッグしている場合(vshostプロセスを無効にしていない場合)、アプリケーションが停止すると、yourexecutable.vshost.exe.configが再びyourexecutable.exe.configに置き換えられることに注意してください。
したがって、もう一度、後で行った変更が表示されない場合があります。 (デバッグ中にブレークポイントで停止し、変更を加えて更新セクションを呼び出した後にファイルを調べると、変更が表示されます)。
設定を探し、存在しない場合はそれを書き込むプログラムをデバッグしている場合、これは非常に混乱します。プログラムを2回実行するときに設定が存在することを期待しないように警告されている場合でも、プログラムの最初の実行後と2回目の実行の前に設定が存在することを期待する場合があります...残念ながら!
他の人がすでに述べているように、アプリケーションがデプロイされたとき、またはbinから直接開始されたときにすべてが機能するため、心配する必要はありません...
ただし、プログラムをデバッグしていて、初めてアプリケーション設定を使用することにした場合は、「トラップ」に陥る可能性があります。また、XMLの手書きを避けるために、コードから始めてプログラムを設定を書いて...すべてのものを取得してから、さらにいくつか追加します。