3
我有2個日期選擇器。一個發票和一個到期日。 我可以在明天選擇發票日期。但是,當我繼續填寫控件時,它可能會在今天保留截止日期。 這給出了duedate事件沒有被解僱的場景,因爲我沒有輸入它。 現在,我不希望用戶的到期日小於實際發票日期,但由於「截止日期」事件未被解僱,因此我無法真正驗證此情況。在datepicker上提高驗證事件c#Winforms
任何人都可以告訴我如何通過代碼觸發驗證事件嗎?
這是我對那一刻的情景:
private void dpInvoiceDate_Validating(object sender, CancelEventArgs e)
{
// Convert the dp invoice date + hour to only date
var dateAndTime = Convert.ToDateTime(dpInvoiceDate.Text);
var date = dateAndTime.Date;
if (!InputChecks.IsGeldigeDatum(DateTime.Now.Date, Convert.ToDateTime(date)))
{
errorProvider1.SetError(dpInvoiceDate, "Invoice date can not be in the past");
e.Cancel = true;
}
else
{
errorProvider1.SetError(dpInvoiceDate, "");
}
}
private void dpDueDate_Validating(object sender, CancelEventArgs e)
{
// Convert the dp invoice date + hour to only date
var dateAndTime = Convert.ToDateTime(dpDueDate.Text);
var date = dateAndTime.Date;
var dateAndTimeInvioceDate = Convert.ToDateTime(dpInvoiceDate.Text);
var dateInvoiceDate = dateAndTimeInvioceDate.Date;
if (date < dateInvoiceDate)
{
errorProvider1.SetError(dpDueDate, "Due date can not be in the past");
e.Cancel = true;
}
else
{
errorProvider1.SetError(dpDueDate, "");
}
}
我建議使用Dispatcher.Invoke法點在哪裏,你要調用交貨期事件https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke %28v = vs.110%29.aspx?f = 255&MSPPError = -2147217396 – Needham
您是否使用Winforms驗證機制? – progpow
@progpow:你的確切意思是驗證機制?在我的保存按鈕即時調用'(this.ValidateChildren())'但即使點擊按鈕不會返回我的錯誤。或者至少它沒有顯示我的錯誤提供者。 – Kevin