Последний раз, когда я занимался серьезным программированием, было 25 лет назад в C с копией Кернигана и Ричи. Будьте осторожны со стареющим любителем!C# Фокус() появляется, чтобы вызвать метод Leave()
По существу, это старая вещь с возможностью выбора даты. У меня есть решение, прекрасно работающее с одним исключением. Я использую сочетание маскированного TextBox и MonthCalendar. Маскированный TextBox просто отображает любое значение (включая null) из набора данных и принимает значения из календаря. Нажатие назад в календаре очищает скрытый TextBox. Все это очень просто. Все, что мне нужно сделать, это скрыть календарь, когда он теряет фокус. Простой пример демонстрирует проблему:
Создайте форму с текстовым полем, чтобы получить начальный фокус, скрытое текстовое поле и скрытый Календарь событий. В Enter случае маскированной текстовое поле, у меня есть следующий код:
monthCalendar1.Visible = true;
monthCalendar1.Focus();
Мое намерение состояло в том, чтобы поместить следующий код в отпусках случае MonthCalendar:
monthCalendar1.Visible = false;
По какой-то причине, этот код запускается, как только календарь получает фокус, и календарь немедленно скрывается. Отладка подтверждает, что этот код активирован. Если событие «Оставить» пуст, MonthCalendar действительно получает фокус и сохраняет его, потому что с помощью клавиш со стрелками можно перемещаться по календарю.
Может ли кто-нибудь объяснить это поведение старой магии или, что еще лучше, дать мне указатель на то, что я пытаюсь сделать.
Большое спасибо заранее.
Почему бы просто не использовать элемент управления DateTimePicker? Похоже, это то, что вы пытаетесь имитировать. – LarsTech
Я должен уметь очистить его и вернуть null. Все, что я прочитал о nullable DateTimePickers, только смутило меня. –