假设对于WinForms应用程序中的每个Form,您希望将光标更改为WaitCursor.显而易见的方法是将代码添加到实例化/显示表单的每个位置:
Try
Me.Cursor = Cursors.WaitCursor
Dim f As New frmMyForm
f.Show()
Catch ex As Exception
Throw
Finally
Me.Cursor = Cursors.Default
End Try
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有办法告诉你的应用程序,"每当任何表单Load事件触发时,显示一个WaitCursor.当表单事件显示完成后,将光标设置回Default." 这样,Me.Cursor代码可能只在一个地方而不是分散在整个应用程序中 - 并且不会忘记将它放入每个表单实例化中.
我想您可以继承常规Form类并在重写事件中添加游标设置,但我相信当您继承Form对象时,您将失去可视化设计器功能.
回答你的问题 - 没有全球 .Net 事件来实现你想要的。对此没有任何纯 .net 解决方案。您可以看一下面向方面的编程和横切关注点 - 可能有一个 AOP 解决方案(一些谷歌搜索将帮助您开始,然后发回此处了解详细信息)。
然而,接下来的更多的是关于如何使用 win32 消息传递实现此目的的想法,而不是完整的解决方案。