Visual Studio WinForms项目中表单字段更新TimeSpan值的问题
.NET Framework 4.5.2 WinForms中TimeSpan值无法通过表单控件持久化更新
我有一个Visual Studio开发的WinForms项目,环境配置如下:
- 目标框架:
.NETFramework,Version=v4.5.2 - 运行时版本:
v4.0 - 基于Microsoft Forms构建
项目启动时通过settings.json加载初始配置,TextBox、NumericUpDown等控件可以正常读写JSON中的其他类型值,但用于SQL备份执行时间的TimeSpan字段无法通过控件修改并保存:
- 测试过TextBox、NumericUpDown、设置为24小时格式的DateTimePicker三种控件,均能正常显示初始值(如
03:00:00) - 但修改值后(比如改为
04:00:00),一旦失去控件焦点,值会立即恢复为初始默认值,修改无法生效
相关代码片段
ApplicationSettings类定义
public class ApplicationSettings { // SQL备份执行时间 public TimeSpan BackupTime { get; set; } // 其他配置属性... }
数据绑定与配置加载代码
// 加载配置文件 var settingsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "settings.json"); var settings = JsonConvert.DeserializeObject<ApplicationSettings>(File.ReadAllText(settingsPath)); // DateTimePicker控件绑定示例(设置为24小时时间格式) dateTimePickerBackup.Format = DateTimePickerFormat.Time; dateTimePickerBackup.ShowUpDown = true; dateTimePickerBackup.Value = DateTime.Today.Add(settings.BackupTime); // TextBox控件绑定示例 textBoxBackupTime.DataBindings.Add("Text", settings, "BackupTime", true, DataSourceUpdateMode.OnPropertyChanged);
settings.json配置内容
{ "BackupTime": "03:00:00" }
已尝试操作
按照Oliver的建议调整代码后出现错误(暂未记录具体错误信息,后续补充细节),但核心问题仍未解决,特此求助。
内容的提问来源于stack exchange,提问作者joseph Laurello
相关产品推荐
相关产品推荐

