上一次我做任何严肃的编程是 25 年前用 C 语言编写的 Kernighan 和 Ritchie 的副本。请对上了年纪的素人温柔一点!
从本质上讲,它是旧的可空日期选择器。我有一个解决方案运行良好,但有一个例外。我正在使用蒙面文本框和 MonthCalendar 的组合。屏蔽的 TextBox 仅显示数据集中的任何值(包括 null)并接受日历中的值。在日历中按退格键会清除被屏蔽的文本框。这一切都非常简单。我现在需要做的就是在日历失去焦点时隐藏它。一个简单的例子演示了我遇到的问题:
创建一个带有作为初始焦点的文本框、一个蒙版文本框和一个隐藏的 MonthCalendar 的表单。在被屏蔽的文本框的 Enter 事件中,我有以下代码:
monthCalendar1.Visible = true;
monthCalendar1.Focus();
我的意图是将以下代码放入 MonthCalendar 的 Leave 事件中:
monthCalendar1.Visible = false;
由于某种原因,一旦日历获得焦点并立即再次隐藏日历,就会触发此代码。调试确认此代码已被触发。如果 Leave 事件为空,MonthCalendar 确实会获得焦点并保留它,因为可以使用箭头键导航日历。
任何人都可以向老顽固解释这种行为,或者更好的是,给我一个指向我正在尝试做的事情的指针。
提前谢谢了。