2017-05-24 2 views
2

私ははSettings.settingsに

private int _Capacity = ConfigurationManager.AppSettings["FuelTankCapacity"]; 

から設定の私の使用を変更した

EDIT ...

private int _Capacity = Convert.ToInt32(ConfigurationManager.AppSettings["FuelTankCapacity"]); 

これを設定するデータの種類を変更します問題を解決しましたが、それは怠惰な修正のように感じます。設定には整数型を指定する方法がありますが、そこにはありませんか?

元の質問

私のWinFormsアプリケーションでいくつかの設定を作成したが、私はそれらのいずれかでいくつかの問題を抱えています。

この設定は、燃料タンクの最大容量を指定するもので、値は2000(2000リットル)です。

残念ながら、指定した値が整数値であっても、設定はintではなく文字列値として読み取られます。 /のInt32intにSerializeAs値を変更しても問題が解決しないことを

<setting name="FuelTankCapacity" serializeAs="String"> 
    <value>2000</value> 
</setting> 

注:

は、ここでは、この設定のApp.configコードです。

Here's the Settings.settings screen
+0

現在までに問題を再現できません。プロパティ設定のスクリーンショットを投稿できますか?変数が問題になっていますか? –

+0

このように設定しますか:** Properties.Settings.Default.FuelTankCapacity **? –

+0

app.configに直接入力するのではなく、プロジェクトプロパティウィンドウから設定ファイルを追加することを本当に思いついたことがありますか。これはいつもうまくいくようです。次に、 "Properties"名前空間を介してアクセスします。 – Wheels73

答えて

1

私はこの問題はAppSettingsMSDN

に係るキーまたはインデックスのいずれかでアクセスすることができる関連する文字列のキーと文字列値の集合であるタイプNameValueCollectionであることだと思います。

このルートを使用すると、必然的に文字列で終わることになります。ここで

int t = Properties.Settings.Default.FuelTankCapacity; 

は、より多くの情報を約using settings at runtime

あなたがアクセスすることができます:あなたが直接Settingsを経由して変数にアクセスし、それゆえ、あなたがそれを指定したようなタイプにアクセスすることができProperty名前空間を使用して

アプリケーションスコープの設定値を読み取り専用で読み取り、ユーザースコープ設定の値を読み書きすることができます。設定は、プロパティの名前空間を使用してC#で使用できます。

+0

ありがとう!私はこの回答を受け入れるつもりです。なぜなら、それは私が持っていた変換の問題に対処するだけでなく、それは私に上記のコードとは異なり、正しい値を与えてくれます。 – Ortund

+0

@Ortundあなたは大歓迎です。お役に立てて嬉しいです。あなたの質問の前に、私は変数が 'ConfigurationManager'を介してアクセスできることを知りませんでした。このやり方を知ってもいい。 –

関連する問題