datetimepicker控件

时间:2015-06-04 04:05:51

标签: c# winforms datetimepicker

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

我只想在用户进行一些更改时才解雇它。就像一个combobox selectionchagedcommitted事件。

2 个答案:

答案 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());

        }