当用户在DateTimePickerControl中选择某个日期时应该触发哪个事件?我使用了dateTimePicker1_ValueChanged()。但即使用户滚动日期时间选择器,它也会被触发。
我只想在用户进行一些更改时才解雇它。就像一个combobox selectionchagedcommitted事件。
答案 0 :(得分:0)
看看MSDN documentation。特别是 OnValueChanged 事件
您需要使用此事件连接您的控件:
在构造函数方法中:
dateTimePickerControl.ValueChanged += new EventHandler(picker_ValueChanged);
这是方法签名:
void f_ValueChanged(object sender, EventArgs e)
{
//Do whatever you need when the value changes here
}
您也可以从设计师处执行此操作。如果转到“属性”,然后转到“事件”部分,则会列出所有事件。只需双击,它就会为您创建方法签名和布线。
更新到您的更新
如果您特别想检查这是否是程序化更改,那么您希望执行以下操作:
在班级中创建一个全局变量
Boolean isProgrammaticEvent = false;
在您的程序化更改之前:
isProgrammaticEvent = true;
//Change picker value
在您的活动布线中:
void f_ValueChanged(object sender, EventArgs e)
{
Boolean isThisProgrammatic = isProgrammaticEvent;
isProgrammaticEvent = false;
if(isThisProgrammatic)
return;
}
答案 1 :(得分:0)
尝试 MouseCaptureChanged()。滚动时不会触发
private void dateTimePicker1_MouseCaptureChanged(object sender, EventArgs e)
{
DateTime result = dateTimePicker1.Value;
MessageBox.Show(result.ToString());
}