需求
开始时间不能晚于结束时间。
分析
当开始时间晚于结束时间时,提醒用户“开始时间晚于结束时间,是否需要把结束时间清空”;点击是,确认开始时间,清空结束时间;点击否,恢复原先开始时间,保持结束时间。
代码实现
在全局声明两个变量来记录点击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); } } }
大家快去试一试吧,让我们写的代码更加严谨些!