У меня есть WinForm с элементом управления DateTimePicker, показывающим определенную дату из моей базы данных SQL.
Когда пользователь нажимает на нее, у меня открывается настраиваемая форма, чтобы спросить, уверены ли они, что хотят изменить дату.
Если они нажмут OK, они смогут перейти к изменению даты с помощью DateTimePicker, и изменения будут отправлены обратно в мою базу данных SQL Server.
Если вместо этого пользователь нажимает кнопку «Отмена», метод завершает работу, и в базе данных не сохраняются никакие изменения.
Однако меня раздражает то, что даже когда пользователь нажимает кнопку «Отмена», раскрывающийся календарь DateTimePicker остается открытым, что пользователь может интерпретировать как действие, которое не удалось отменить. Как я могу заставить DateTimePicker закрыть открытый раскрывающийся календарь?
private void datDOA_ValueChanged(object sender, EventArgs e)
{
frmConfirmBox frmCB = new frmConfirmBox("Are you sure you want to change the Date of Accident?");
frmCB.ShowDialog();
if (frmCB.intButton == 0)
{
return;
}
datDOA.Format = DateTimePickerFormat.Long;
//...Connect to Database...//
string strCaseNo = txtCaseNo.Text;
string strConnect = BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(strConnect);
linkToDB.Open();
//...Send User Input to Database...//
DateTime dateNewDate = datDOA.Value;
string commandText = "UPDATE tblCases SET DOA = @DOAVal WHERE CaseNo = @CaseNoVal;";
SqlCommand sqlCom = new SqlCommand(commandText, linkToDB);
sqlCom.Parameters.Add("@DOAVal", SqlDbType.DateTime);
sqlCom.Parameters.Add("@CaseNoVal", SqlDbType.VarChar);
sqlCom.Parameters["@DOAVal"].Value = dateNewDate;
sqlCom.Parameters["@CaseNoVal"].Value = strCaseNo;
sqlCom.ExecuteNonQuery();
linkToDB.Close();
}