You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中DateTimePicker遇'01/01/0001'值异常的处理咨询

解决DateTimePicker赋值时的ArgumentOutOfRangeException异常

要避免这个异常,核心是先验证读取到的日期值是否在DateTimePicker允许的范围内,再进行赋值,具体可以按以下步骤处理:

  • 用DateTime.TryParse安全转换读取到的字符串,避免转换失败抛出异常
  • 转换成功后,检查日期是否在dateTimePicker1.MinDate和dateTimePicker1.MaxDate之间(控件默认MinDate为1753年1月1日,MaxDate为9999年12月31日)
  • 如果日期无效或超出范围,给DateTimePicker设置一个合法的默认值(比如当前时间,或者控件的MinDate)

修改后的代码示例:

if (File.Exists(settingsFile))
{
    string[] lines = File.ReadAllLines(settingsFile);
    if (lines.Length > 0)
    {
        trackBarHours.Value = Convert.ToInt32(optionsfile.GetKey("trackbarhours"));
        trackBarMinutes.Value = Convert.ToInt32(optionsfile.GetKey("trackbarminutes"));
        trackBarSeconds.Value = Convert.ToInt32(optionsfile.GetKey("trackbarseconds"));
        savedMilliseconds = Convert.ToInt32(optionsfile.GetKey("milliseconds"));
        
        // 处理日期赋值的安全逻辑
        string targetDateStr = optionsfile.GetKey("timetargetvalue");
        if (DateTime.TryParse(targetDateStr, out DateTime targetDate))
        {
            // 检查是否在DateTimePicker的有效范围内
            if (targetDate >= dateTimePicker1.MinDate && targetDate <= dateTimePicker1.MaxDate)
            {
                dateTimePicker1.Value = targetDate;
            }
            else
            {
                // 超出范围时设为默认值,这里用当前时间,也可以换成dateTimePicker1.MinDate
                dateTimePicker1.Value = DateTime.Now;
            }
        }
        else
        {
            // 字符串无法转换为有效日期时设默认值
            dateTimePicker1.Value = DateTime.Now;
        }
        
        richTextBox1.Text = optionsfile.GetKey("result");
    }
}

额外优化:如果你的optionsfile.GetKey方法在键不存在时会返回null或空字符串,可以先判断字符串是否为空,提前跳过无效转换:

string targetDateStr = optionsfile.GetKey("timetargetvalue");
if (!string.IsNullOrEmpty(targetDateStr))
{
    // 上面的转换和范围检查逻辑
}
else
{
    dateTimePicker1.Value = DateTime.Now;
}

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:05:32