私は編集可能なComboBoxを持っています。ユーザがテキストを入力し、保存ボタンを押す。それらのテキストは文字列に変換されます。実行時にapp.configの新しいユーザー設定を作成する方法
app.configの新しいユーザー設定を文字列の名前で作成するには、実行時に必要です。 (私はこの部分が今働くと思う)。
次に、別のComboBoxの選択項目が設定に保存されます。 (オブジェクト参照が設定されていないエラー)。
プログラムの各コントロールの状態、チェックボックス、テキストボックスなどを保存するカスタムプリセットを作成します。
// Control State to be Saved to Setting
Object comboBox2Item = ComboBox2.SelectedItem;
// User Custom Text
string customText = ComboBox1.Text;
// Create New User Setting
var propertyCustom = new SettingsProperty(customText);
propertyCustom.Name = customText;
propertyCustom.PropertyType = typeof(string);
Settings.Default.Properties.Add(propertyCustom);
// Add a Control State (string) to the Setting
Settings.Default[customText] = (string)comboBox2Item;
ここではエラーが発生します。
Settings.Default[customText] = (string)comboBox2Item;
例外:スロー:「オブジェクト参照がオブジェクトのインスタンスに設定されていません。」
同じエラーで、文字列ではなくオブジェクトにComboBox1.Textを設定しようとしました。テキストと文字列もnullではありません。ここで
Object customText = ComboBox1.Text;
は、私が何をしようとしているの視覚的だ
後に非常に次の行でなければなりません
Properties.Settings.Default.Save();
はおそらく、設定を保存し、それをリロードする必要があります。コードで使用する多くの設定は、デザイナーから設定を変更したときにVisual Studioによって生成されるクラスを通じて行われます。設定ファイルを解析して手動で変更できるXML設定クラスがありますが、保存する前に変更を検証するXSDはありません。設定が無効な設定マーキングのためにアプリケーションが起動しない状態に変更される可能性があるので、注意してください。 – xtreampb@xtreampb私のコードを更新しました。私はそれがapp.configの設定を作成し、そのコードを実行したと思うが、設定に文字列を追加しようとすると同じエラーが発生する。 –
'Settings.Default [customText]'が設定クラスにコンパイルされていないので、エラーがスローされていると思います。あなたのソリューションエクスプローラで、 'properties/settings.settings/settings.designer.cs'を展開すると、デフォルトのインスタンスにすべての項目が表示されます。設定を追加するときは、その設定を呼び出す前に、設定ファイルを保存してから再読み込みする必要があります。 – xtreampb