У меня проблема с компонентом 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, текущая дата отображается правильно. Когда я нажимаю на кнопку выпадающего меню, чтобы открыть календарь, также отображается дата. Но я не могу выбрать дату, щелкнув по календарю: ничего не происходит, поле даты по-прежнему содержит инициализированную дату, и календарь остается открытым вместо ввода даты в поле:
Я должен закрыть его, открыть его во второй раз, и на этот раз он работает.
Теперь, я думаю, это вызвано изменением формата, когда я нажимаю на раскрывающийся список, но Я не могу понять, почему это так и не позволяет мне выбирать дату напрямую, без необходимости закрывать и снова открывать календарь. Насколько я понимаю, при открытии календаря он должен отображать дату в поле, и позвольте мне выбрать дату, закрывая календарь.
Обратите внимание, что когда я сначала щелкаю в поле даты, он делает появляются даты, а затем, когда я открываю выпадающее меню, все работает правильно, возможно, потому, что формат даты уже установлен.
Пожалуйста, дайте мне знать, если вам нужна информация или код. Спасибо.