需要帮助在 Visual Studio 中使用表单字段更新 TimeSpan 值

问题描述 投票:0回答:1

我有一个使用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",

任何帮助将不胜感激。

乔伊

.net winforms visual-studio-2022 timespan
1个回答
0
投票

它的工作原理是将

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"));
© www.soinside.com 2019 - 2024. All rights reserved.