datetimepicker control

本文关键字:control datetimepicker | 更新日期: 2023-09-27 17:53:30

当用户在DateTimePickerControl中选择某个日期时,应该触发哪个事件?我使用了dateTimePicker1_ValueChanged()。但是,即使用户滚动到日期时间选择器,它也会被触发。

我只想让它只在用户做一些改变时被触发。就像一个组合框selectionchagedcommitted事件

datetimepicker control

查看MSDN文档。特别是 onvaluechange 事件

您需要使用以下事件将控件连接起来:

在构造方法中:

dateTimePickerControl.ValueChanged += new EventHandler(picker_ValueChanged);

这里是方法签名:

void f_ValueChanged(object sender, EventArgs e)
{
    //Do whatever you need when the value changes here
}

您也可以在设计器中执行此操作。如果转到Properties,然后转到Events部分,它会列出所有事件。只需双击,它就会为您创建方法签名和连接。

UPDATE TO YOUR UPDATE

如果你特别想检查这是否是一个编程更改,那么你需要这样做:

在你的类中创建一个全局变量

     Boolean isProgrammaticEvent = false;

程序更改前:

  isProgrammaticEvent = true;
//Change picker value

在你的事件布线中:

 void f_ValueChanged(object sender, EventArgs e)
  {
    Boolean isThisProgrammatic = isProgrammaticEvent;
    isProgrammaticEvent = false;
    if(isThisProgrammatic)
        return;
  }

试试MouseCaptureChanged()。滚动时不会触发

private void dateTimePicker1_MouseCaptureChanged(object sender, EventArgs e)
        {
            DateTime result = dateTimePicker1.Value;
            MessageBox.Show(result.ToString());
        }