C# 两个DataGridView设置时间范围,开始日期小于结束日期

需求

  开始时间不能晚于结束时间。

分析

  当开始时间晚于结束时间时,提醒用户“开始时间晚于结束时间,是否需要把结束时间清空”;点击是,确认开始时间,清空结束时间;点击否,恢复原先开始时间,保持结束时间。
在这里插入图片描述

代码实现

在全局声明两个变量来记录点击DataGridView控件前的事件:

       	string dataStart = Convert.ToString(DateTime.Now.AddDays(-1)); //记录选择前开始日期
        string dataEnd = Convert.ToString(DateTime.Now); //记录选择前结束日期
		
        /// <summary>
        /// 触发开始日期控件单击事件,保存选中前的开始日期
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dtpStart_MouseClick(object sender, MouseEventArgs e)
        {
            dataStart = dtpStart.Text;
        }

        /// <summary>
        /// 触发结束日期控件单击事件,保存选中前的结束日期
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dtpEnd_MouseClick(object sender, MouseEventArgs e)
        {
            dataEnd = dtpEnd.Text;
        }

开始时间——DataGridView控件绑定的事件:

        /// <summary>
        /// 开始时间——时间范围
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="value"></param>
        private void dtpStart_ValueChanged(object sender, DateTime value)
        {
            DateTime stStart = dtpStart.Value.Date;
            DateTime stEnd = dtpEnd.Value.Date;
            if (DateTime.Compare(stStart, stEnd) > CommonAttribute.ZERO_INT)
            {
                DialogResult result = MessageBox.Show("开始时间晚于结束时间,是否需要改动结束时间", "提示框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    dtpEnd.Value = dtpStart.Value.AddDays(1);
                }
                else
                {
                    dtpStart.Value = Convert.ToDateTime(dataStart);
                }
            }
        }

结束时间——DataGridView控件绑定的事件:

        /// <summary>
        /// 结束时间——时间范围
        /// </summary>
        /// <param name="sender"></param>      
        /// <param name="value"></param>
        private void dtpEnd_ValueChanged(object sender, DateTime value)
        {
            DateTime stStart = dtpStart.Value.Date;
            DateTime stEnd = dtpEnd.Value.Date;
            if (DateTime.Compare(stStart, stEnd) > CommonAttribute.ZERO_INT)
            {
                DialogResult result = MessageBox.Show("结束时间早于开始时间,是否需要改动开始时间", "提示框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    dtpStart.Value = dtpEnd.Value.AddDays(-1);
                }
                else
                {
                    dtpEnd.Value = Convert.ToDateTime(dataEnd);
                }
            }
        }

  大家快去试一试吧,让我们写的代码更加严谨些!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨思默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值