以编程方式设置DateTimePicker.Checked属性不会触发.ValueChanged事件

时间:2019-05-29 08:12:04

标签: vb.net winforms

我有一个DateTimePicker,其中有一个复选框(ShowCheckBox = True)。在我的代码中,我会根据各种因素自动检查和取消检查它,但是允许用户覆盖它(因此不使用dtp.Enabled = False)。

dtp的选中状态还会更改其他控件的.Enabled属性,因此我试图在ValueChanged事件中进行处理,例如:

Private Sub dtp_ValueChanged(sender As Object, e As EventArgs) Handles dtp.ValueChanged

    If dtp.Checked Then
        SomeOtherControl.Enabled = True
    Else
        SomeOtherControl.Enabled = False
    End If

End Sub

这在用户进行交互时可以正常工作,但是如果我以编程方式设置选中状态,则ValueChanged事件不会触发。

此问题的注释中记录了此行为:How to get datetimepicker c# winform checked/unchecked event

我在文档中找不到其他有关此行为的引用。

这是否是预期的,如果是,为什么?如果没有,如何确保以编程方式更改检查状态会触发ValueChanged事件?

0 个答案:

没有答案