当前位置: 首页 > 编程语言 > C#

C#DateTimePicker陷入循环分享

时间:2023-04-10 11:51:20 C#

C#DateTimePicker陷入循环我在C#中有一个datetimepicker。当我单击它时,它会展开以显示月历,当我单击向左箭头返回一个月时,它会更改值并调用我的事件。该事件包含的代码太多,无法在此处包含,但不言而喻的几个功能。我遇到的问题是,当我单击向左箭头时,它会进入某种循环并持续下降几个月,我无法阻止它。被调用的函数之一包含一个Application.DoEvents(),如果我将其注释掉,它不会卡在循环中,但我需要该命令来更新界面的另一部分。知道为什么会这样吗?我有时可以用这段代码重现它,有时它只执行几次,有时它会陷入循环。privatevoidDateTimePickerValueChangedEvent(objectsender,EventArgse){afunction();}privatevoidafunction(){listView1.Clear();panel1.Visible=true;应用程序.DoEvents();}我也有同样的问题。在我的例子中,我没有调用DoEvents,而是更新了CrystalReport视图。我发现的唯一解决方法是更新我对CloseUp事件的视图,而不是ValueChanged或TextChanged。斯科特,你最终是如何纠正你的问题的?DateTimePickerValueChanged事件错误。根据此页面上的MicrosoftWindows窗体团队https://connect.microsoft.com/VisualStudio/feedback/details/1290685/debugging-datetimepicker-event-hangs-vs:“DateTimePicker控件安装鼠标挂钩作为其功能的一部分,但是当调试器在断点处停止WinForms应用程序时,如果VS恰好收到鼠标消息,它有可能死锁。就目前而言,死锁是不幸的DateTimePicker设计的结果。当单个鼠标钩子是单击下拉列表以显示日历时安装。这意味着不应在日历处于活动状态时调用的任何事件处理程序中发送断点。我们目前正在调查是否可以解决此问题,如果我们能够提供修复,我们将更新此帖子以提供更多信息。“如果您没有看到任何代码,请尝试以下步骤:注释掉整个事件处理程序并查看它的运行速度。一次取消注释一行以查看导致最多问题的行。分析这些方法调用。......获利!您可以尝试几件事。摆脱ChangedEvent中的DoEvents。也许过一会儿(thread.sleep()?)在单独的函数中调用doevents。我知道doevents确实会导致问题,但我很少使用它以上就是C#学习教程的全部内容:C#DateTimePicker陷入循环分享,如果对你有用,还需要了解更多C#学习教程,希望大家多多关注——本文收集自网络且不代表立场,如涉及侵权请点右联系管理员删除,如需转载请注明出处: