Я не уверен, каковы ваши требования, но, возможно, вы могли бы подписаться на событие DateTimePicker ValueChanged, и после того, как они изменили выбранную дату, вы можете спросить их, уверены ли они, что хотят изменить дату с X наY. в случае, если они выбирают отмену, вы всегда можете откатиться к предыдущей выбранной дате.
РЕДАКТИРОВАТЬ: Предположим, что имя вашего DateTimePicker равно dateTimePicker1:
Вот пример класса с именем DTP, который будетсделать это
public partial class DTP : Form
{
DateTime lastSelectedValue;
public DTP()
{
InitializeComponent();
lastSelectedValue = dateTimePicker1.Value;
dateTimePicker1.ValueChanged += new EventHandler(dateTimePicker1_ValueChanged);
}
void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
DialogResult di = MessageBox.Show("Change " + lastSelectedValue.ToString() + " to " + dateTimePicker1.Value.ToString(), "?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
if(di== System.Windows.Forms.DialogResult.OK)
{
SetSqlDateTimeValue( dateTimePicker1.Value );
lastSelectedValue = dateTimePicker1.Value;
}
else
{
dateTimePicker1.ValueChanged -= dateTimePicker1_ValueChanged;
//Setting back the dtp to the old value
dateTimePicker1.Value = lastSelectedValue;
dateTimePicker1.ValueChanged += dateTimePicker1_ValueChanged;
}
}
private void SetSqlDateTimeValue(DateTime dateTime)
{
throw new NotImplementedException();
}
}
Обратите внимание, что я объявил переменную DateTime с именем lastSelectedValue в верхней части.затем, после изменения значения, я спрашиваю пользователя, желает ли он продолжить, если он дозирует, я делаю SQL, если он этого не делает, я установлю для свойства Value объекта dateTimePicker1 значение lastSelectedValue.