同じアプリを使用して実行時間にapp.configを編集します
-
10-10-2019 - |
質問
app.configを使用するWindowsフォームアプリケーション対2008 -C#があります。
実行時間では、アプリケーションのメニューオプションでは、app.configの値を編集し、保存してアプリケーションを再起動したいと思います。
サンプルソースコード、優れたパターンとプラクティス??
編集:
MSDNフォーラムでは、Jean Paul VA:
テストWindowsフォームのアプリケーションを作成し、app.configを追加します。
system.confgurationへの参照を追加します
値「Verdana」の付いたAppsettingsに「Font」という名前のキーを追加します
フォームにボタンを配置し、それをクリックすると変更コードを追加します。
System.Configuration.Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); configuration.AppSettings.Settings.Remove("font"); configuration.AppSettings.Settings.Add("font", "Calibri"); configuration.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings");
あなたはそれについてどう思いますか ?
解決
実行時に実際に構成ファイルに書き込むことはできないと思いますが、読み取り専用かもしれませんが、ファイルを書き直し(必要に応じて適切な変更を加えて)これを回避する方法があるかもしれません。既存のものは、さらに、新しい値をロードするためにアプリケーションを再起動します(これが望ましいことを非常に疑っています。
また、この方法で簡単に操作できる設定ファイルにアプリケーション設定を保存することを検討することもできます。
設定を使用するには、最初に設定ファイルがあると仮定しましょう(項目を作成しない場合:item-> settingsファイルを追加してください)、次に設定された設定が設定されています。 MyUnicornsName
;変更を加えてそれを維持するために、次のようにすることができます。
Settings.Default.MyUnicornsName = "Lucifers Spawn";
Settings.Default.Save();
同様に、設定を読むには:
ATextDisplayControl.Text = Settings.Default.MyUnicornsName
わからない場合は、IDEの設定ファイルを開く/ダブルクリックすると、Visual Studioが設定エディターを開きます。このインターフェイスを使用して、初期設定とその値を追加および編集し、 string
サポートされている唯一の値ではなく、すべてのプリミティブを使用でき、私が知る限り、シリアル化可能な値も使用できます。
他のヒント
通常のAuto-Gen'Dプロパティを使用できない理由はありますか。素晴らしいことの1つは、あなたが何を変えているかを知っているので、アプリケーションを再起動する必要さえないことです!
設定のランタイムアクセスは、次のように簡単です。
this.BackColor = Properties.Settings.Default.myColor;
(App.Config自体を変更するのに適したパターンはありません。単にB/Cは、エキスパートユーザーの設定を使用して、そのコンテキストで読み取るように設計されています。)
これらの種類のプロジェクト - >プロパティ - >設定を使用します。
実際、app.configのプロパティは読み取られているので、それをすることができません。
しかし、トリックがあります..........................
settings.csファイルで、公開されている関数またはメソッドを作成して、 Properties.settings
次のコードを書きます。
public void ChangeProperty(string propertyname, string value)
{
this[propertyname] = value;
}
プロパティ名の正確な文字列をメソッドに渡すことを忘れないでください。または、設定のWriteonlyプロパティをより適切に作成します。
アップデート
プロパティとして設定するためのコードは次のとおりです。接続文字列を例として使用しています。保存されているプロパティは覚えておいてください Object
タイプして、それに固有のプロパティを作成できるようにします。
public string MyCustomConnectionstring
{
set
{
//replace the string with your connection string otr what ever setting you want to change
this["myConnectionString"] = value;
}
}
これで、このプロパティを簡単に使用して、実行時に接続ストリングを変更できます...