winformsプログラムのさまざまな設定ファイルをさまざまな.settingsファイルに格納しています。これらの設定に含ま はSystem.Drawing.Point
、System.Drawing.Location
、System.TimeSpan
、System.DateTime
、等...TextBox.Text(WinForms)に非文字列をバインドするデータ
私は、フォームのLocation
System.Drawing.Location
をバインドし、.Save()
メソッドを呼び出すと、すべてが正常に動作するようです。つまり、キャストの必要がないように見えるので、フォームのSystem.Drawing.Location
は、.settingsファイルに格納されているSystem.Drawing.Location
の設定と直接互換性があります。 さらに、TimeSpan timeSpan = Settings.Duration;
と言ってもうまくいきます。
ここでは、さまざまなパラメータを調整できる大きな設定フォームを作成しました。これには、さまざまなDateTime
とTimeSpan
の設定が含まれます。これらは、多くのTextBox
に表示し、編集可能です、私は次のようにバインドされたデータを持っている:私はそれを編集し、設定データソースにSave()
を呼び出すしようとすると、
Settings DefaultSettings = Settings.Default;
TextBox1.DataBindings.Add(("Text", DefaultSettings, "Duration", false, DataSourceUpdateMode.OnValidation, new TimeSpan(00, 30, 00));
はTimeSpan
は、しかし、TextBox
に見えます私は次のエラーを取得する:
Value of '0' is not valid for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'. Parameter name: Value
エラーは、Visual Studioに由来するコードブロックを生成:
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("00:30:00")]
public global::System.TimeSpan StartWorkDay {
get {
return ((global::System.TimeSpan)(this["Duration"]));
}
set {
this["Duration"] = value;
}
}
私はこの問題が、文字列をSystem.TimeSpan
に変換しようとしているという事実と、私の.settingsファイルにある他のさまざまなクラスによって引き起こされたと思います。
パラメータの文字列を受け入れるDataBindings.Add(
を使用してバインドしているので、そこに新しいキーワードをキャストしたり使用することはできません。
:オブジェクトのパラメータごとにパラメータを構築することで設定ファイルを更新するが、私はちょうどそれらをバインドすることを好むように多くのTextBoxとNumericUpDownsに保存されているので、多くの設定を持っています可能であれば、TextBox
に直接連絡してください。
私はこれを達成する最も簡単な方法は何ですか?
WinForms、asp.net、WPFなど、使用している技術にタグを追加する必要があります。この質問は、C#と、あなたのプレゼンテーション技術と関係することとほとんど関係がありません。 –
私はそれを編集してWinFormsであることを示しました。 – Ozzah