1 回答

TA贡献1856条经验 获得超5个赞
好像失败的 DrawImage 导致了一些错误状态
是的,这正是它的作用。Paint 事件处理程序中的异常非常尴尬,它使继续调试程序变得困难。如果什么都不做,当你继续调试时,这样的异常会一遍又一遍地引发,使得诊断程序中的另一个异常变得非常困难。这种担忧已经过时,可以追溯到 Aero 尚不存在的 Win2000/XP 时代。
执行此操作的方法是调用 OnPaint() 的方法,它是一个名为Control.PaintWithErrorHandling()的内部方法。看一看,您正确假设的错误状态名为 STATE_EXCEPTIONWHILEPAINTING。当它被设置一次时,它总是回退到 PaintException(),它绘制了失败的红十字。从而避免再次引发异常的风险。我将复制/粘贴评论:
// Exceptions during painting are nasty, because paint events happen so often.
// So if user painting code ----s up, we make sure never to call it again,
// so as not to spam the end-user with exception dialogs.
破折号用于拼写 f-word,在开源之前清理源代码花了很长时间,并在他们尝试自动化时造成了相当大的损害:)
- 1 回答
- 0 关注
- 252 浏览
添加回答
举报