我爲我的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
可見和可編輯的,我有以下方式綁定的數據:
Settings DefaultSettings = Settings.Default;
TextBox1.DataBindings.Add(("Text", DefaultSettings, "Duration", false, DataSourceUpdateMode.OnValidation, new TimeSpan(00, 30, 00));
的TimeSpan
是可見的TextBox
,但是當我嘗試對其進行編輯和調用設置數據源Save()
,我得到以下錯誤:
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(
來綁定它們,它接受參數的字符串,所以我不能在那裏使用新的關鍵字。
我能手動代碼處理這一切:通過構建對象參數的參數更新設置文件,但我有存儲在這麼多的文本框和NumericUpDowns這麼多的設定,我寧願只是將它們綁定直接到TextBox
,假設可能。
我能達到這個目標的最簡單方法是什麼?
您應該爲WinForms,asp.net,WPF或任何正在使用的技術添加標籤。這個問題與c#以及與演示技術有關的大多數問題都很少。 – 2011-02-01 03:48:17