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