我有一个使用supportedRuntime version="v4.0" 和.NETFramework,Version=v4.5.2 以及Microsoft Forms 的Visual Studio 项目。我使用默认的 json 设置文件在应用程序启动时加载初始设置。我可以将 TexTBox 和 NumericUpDown 字段添加到我的表单中,以读取和更新 json 文件中的值。
但是,我还没有找到更新 TimeSpan 值的方法。我尝试使用 TextBox 和 NumericUpDown ,这将读取 TimeSpan 值并在表单字段中显示时间。但是,我无法使用表单字段更新 TimeSpan 值。我还尝试在表单中使用 DateTimePicker 字段(仅格式化为 24 小时时间),这也将显示 TimeSpan 值,但我再次无法使用日期时间表单字段编辑该值。例如,将时间从 03:00:00 更改为 04:00:00 后,一旦您退出该字段,该值将恢复为默认值。我使用 TextBox 和 DateTimePicker 也有同样的行为。
我已经包含了与 TimeSpan 值相关的可能应用程序的不同代码片段。该值设置运行 SQL 备份的时间。
this.TxtPickBackupStartTime.DataBindings.Add(nameof(this.TxtPickBackupStartTime.Text), applicationSettings, nameof(applicationSettings.StartBackupAt), false, DataSourceUpdateMode.OnValidation)
this.TxtPickBackupStartTime = new System.Windows.Forms.TextBox();
this.Controls.Add(this.TxtPickBackupStartTime);
private System.Windows.Forms.TextBox TxtPickBackupStartTime;
public TimeSpan StartBackupAt;
StartBackupAt = new TimeSpan(3, 0, 0),
settings.json file:
"StartBackupAt": "03:00:00",
任何帮助将不胜感激。
乔伊
它的工作原理是将
TextBox.Text
属性绑定到模型类的 DateTime
属性。只需确保指定 T
日期/时间格式即可抑制日期部分的显示。
示例:
public class TimeModel
{
private DateTime _time;
public DateTime Time
{
get {
return _time;
}
set {
// Strip off the date part.
_time = new DateTime(value.TimeOfDay.Ticks);
}
}
// For convenience (optional)
public TimeSpan TimeSpan { get { return Time.TimeOfDay; } }
}
this.txtTime.DataBindings.Add(new System.Windows.Forms.Binding("Text",
this.timeModelBindingSource, "Time", true,
System.Windows.Forms.DataSourceUpdateMode.OnValidation, null, "T"));