如何防止DateTimePicker Valuechanged事件从文本框离开事件
本文关键字:事件 文本 离开 DateTimePicker Valuechanged 何防止 | 更新日期: 2023-09-27 17:51:08
在我的c# Windows窗体有一个文本框和一个datatimePicker。这个文本框有离开事件和当文本框离开事件发生时,我想在datetimepicker中填充值。这个日期时间选择器也有ValueChanged Event。现在我的问题是,当从文本框离开事件的datetimepicker中填充值时,同一时间datetimepicker valuechange事件也发生了。文本框离开事件再次发生。在这个问题中,我不想发生日期时间选择器Valuechanged事件从文本框离开事件。这是我的代码示例。
private void textbox_Leave(object sender, EventArgs e)
{
datetimepicker.Value = System.DateTime.Now.ToString("dd/MM/yyyy").Substring(0, 10);
}
private void datetimepicker_ValueChanged(object sender, EventArgs e)
{
//do something
}
谢谢你的帮助。对不起,我的英语不好。
您可以使用
-
或布尔变量,表示
DateTimePicker
的值是从之外的设置的,如果出现其ValueChangedEvent
,则不关心。//PSEUDO CODE bool setDateFromOutside = false; //GLOBAL VARIABLE public void TextBox_Leave(...){ setDateFromOutside = true; //SET TRUE dateTimePicker.Value = newDate; //SOME VALUE setDateFromOutside = false; //SET TRUE } public void DateTimePicker_ValueChanged(...){ if(setDateFromOutside) return; }
-
或设置
DateTimePicker
前取消对ValueChangedEvent
的订阅,之后重新订阅
现在我解决了我的问题。
private void textbox_Leave(object sender, EventArgs e)
{
datetimepicker.ValueChanged -= datetimepicker_ValueChanged;
datetimepicker.Value = System.DateTime.Now.ToString("dd/MM/yyyy").Substring(0, 10);
datetimepicker.ValueChanged += datetimepicker_ValueChanged;
}
private void datetimepicker_ValueChanged(object sender, EventArgs e)
{
//do something
}