[英]How to prevent DateTimePicker Valuechanged Event from Textbox Leave Event
In my C# Windows form have one textbox and one datatimePicker.This textbox has Leave Event and when textbox leave event occured,I want to fill value in datetimepicker. 在我的C#Windows窗体中,有一个文本框和一个datatimePicker。此文本框具有“离开事件”,当发生文本框离开事件时,我想在datetimepicker中填充值。 This datetimepicker also has ValueChanged Event.
此datetimepicker还具有ValueChanged事件。 Now my problem is when fill value in datetimepicker from textbox leave event,same time datetimepicker ValueChanged Event also occured.
现在我的问题是从文本框离开事件填充datetimepicker中的值时,也发生了相同时间的datetimepicker ValueChanged事件。 So textbox leave event occur again.
因此,文本框离开事件再次发生。 In this problem, I don't want to occur datetimepicker Valuechanged Event from textbox Leave Event.
在此问题中,我不想从文本框“离开事件”中发生datetimepicker Valuechanged事件。 This is sample for my code.
这是我的代码示例。
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
}
Thanks for help. 感谢帮助。 Sorry for my English.
对不起我的英语不好。
You may use 您可以使用
or a boolean variable, that indicates that the value to DateTimePicker
is set from outside , and if appears its ValueChangedEvent
, just don't care. 或一个布尔型变量,它指示
DateTimePicker
的值是从outside设置的,如果它的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; }
or before setting the value to DateTimePicker
unsubscribe from its ValueChangedEvent
, and subscribe again after. 或在将值设置为
DateTimePicker
之前从其ValueChangedEvent
取消订阅 ,然后再进行订阅。
Now I resolve my problem by this. 现在,我以此解决我的问题。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.