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

简介: 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);
                }
            }
        }

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

目录
相关文章
|
7月前
|
C#
C# DEV 关于设置gridview 指定单元格字体为红色
C# DEV 关于设置gridview 指定单元格字体为红色
|
7月前
|
C#
C# DEV TextEdit 设置文本框只能输入数字(整数)
C# DEV TextEdit 设置文本框只能输入数字(整数)
|
7月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPISDK设置软件触发模式(C#)
79 1
|
2月前
|
C#
C# 技巧:如何确定日期时间范围的日周月季度半年
C# 技巧:如何确定日期时间范围的日周月季度半年
35 1
|
3月前
|
关系型数据库 数据库 PostgreSQL
在C#中获取与设置Windows的字符编码方式
通过以上步骤,你可以在Docker环境下有效地重启PostgreSQL服务。这对于维护数据库健康、应用更新或环境配置更改后确保数据库服务正常运行至关重要。根据你的具体需求和环境设置,选择合适的方法来执行重启操作。
20 0
|
7月前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
67 0
|
7月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
60 0
|
7月前
|
存储 安全 Unix
C#.Net筑基-类型系统②常见类型--日期和时间的故事
在System命名空间中,有几种表示日期时间的不可变结构体(Struct):DateTime、DateTimeOffset、TimeSpan、DateOnly和TimeOnly。DateTime包含当前本地或UTC时间,以及最小和最大值;DateTimeOffset增加了时区偏移信息,适合跨时区操作。UTC是世界标准时间,而格林尼治标准时间(GMT)不稳定,已被更精确的UTC取代。DateTimeOffset和DateTime提供了转换为UTC和本地时间的方法,以及各种解析和格式化函数。
|
7月前
|
存储 缓存 C#
46.c#:datagridview控件
46.c#:datagridview控件
93 1
|
7月前
|
设计模式 C#
36.c#:如何设置MDL窗口
36.c#:如何设置MDL窗口
55 1