DateTimePicker не работает, когда дата еще не отображается - PullRequest
0 голосов
/ 19 февраля 2020

У меня проблема с компонентом DateTimePicker, который не работает так, как я хочу. Во-первых, вот требуемое поведение DateTimePickers в форме:

Когда пользователь появляется на экране, даты пусты. Затем он нажимает на один из них, который активирует его и отображает текущую дату. Теперь пользователь может ввести дату или использовать календарь, чтобы выбрать ее.

Чтобы изначально дата была пустой, я использую пользовательский формат и устанавливаю ее в '' (пробел). Дата инициализируется при загрузке формы с текущей датой, но не отображается благодаря этому пользовательскому формату. Для свойства 'Checked' установлено значение false.

Затем, когда пользователь щелкает по нему, он устанавливает формат «Короткий» и отображает дату. Для свойства 'Checked' также установлено значение true.

Существует функция, которая активирует или деактивирует DateTimePicker в зависимости от логического параметра:

Private Sub Activation_date(dtp As DateTimePicker, activation As Boolean)
    If activation And dtp.Checked = False Then
        dtp.Format = DateTimePickerFormat.Short
        dtp.Checked = True
    ElseIf Not activation And dtp.Checked = True Then
        dtp.Format = DateTimePickerFormat.Custom
        dtp.CustomFormat = " "
        dtp.Checked = False
    End If
End Sub

Эта функция вызывается для Нажмите на событие, а также на событие DropDown, чтобы показать дату. Они оба состоят из вызова этой функции:

Activation_date(sender, True)

Вот проблема: когда я щелкаю в поле DateTimePicker, текущая дата отображается правильно. Когда я нажимаю на кнопку выпадающего меню, чтобы открыть календарь, также отображается дата. Но я не могу выбрать дату, щелкнув по календарю: ничего не происходит, поле даты по-прежнему содержит инициализированную дату, и календарь остается открытым вместо ввода даты в поле:

Calendar open.

Я должен закрыть его, открыть его во второй раз, и на этот раз он работает.

Теперь, я думаю, это вызвано изменением формата, когда я нажимаю на раскрывающийся список, но Я не могу понять, почему это так и не позволяет мне выбирать дату напрямую, без необходимости закрывать и снова открывать календарь. Насколько я понимаю, при открытии календаря он должен отображать дату в поле, и позвольте мне выбрать дату, закрывая календарь.

Обратите внимание, что когда я сначала щелкаю в поле даты, он делает появляются даты, а затем, когда я открываю выпадающее меню, все работает правильно, возможно, потому, что формат даты уже установлен.

Пожалуйста, дайте мне знать, если вам нужна информация или код. Спасибо.

...