My.Application.DoEvents 方法
更新:2007 年 11 月
处理当前位于消息队列中的所有 Windows 消息。
' Usage
My.Application.DoEvents()
' Declaration
Public Sub DoEvents()
备注
My.Application.DoEvents 方法允许应用程序处理代码运行时可能引发的其他事件。My.Application.DoEvents 方法的行为与 DoEvents 方法的相同。
当您运行 Windows 窗体应用程序时,它将创建一个新窗体,该窗体等待要处理的事件。该窗体每次处理某个事件(如单击按钮)时,会处理与该事件关联的所有代码。所有其他事件将在队列中等待。当代码处理事件时,应用程序不会响应。例如,如果将甲窗口拖到乙窗口之上,则乙窗口不会重新绘制。
如果在代码中调用 My.Application.DoEvents,应用程序将可处理其他事件。例如,如果代码在一个循环中将数据添加到 ListBox,并且在该循环的每一步之后调用 My.Application.DoEvents,则当其他窗口被拖到您的窗体之上时,该窗体将重新绘制。如果从代码中移除 My.Application.DoEvents,则在按钮的单击事件处理程序执行完毕前,您的窗体不会重新绘制。
通常,您在循环中使用此方法来处理消息。
说明: |
---|
My.Application.DoEvents 方法不会按与窗体完全相同的方式来处理事件。多线程处理可以使窗体直接处理事件。有关更多信息,请参见多线程处理 (Visual Basic)。 |
警告: |
---|
如果某个处理用户界面 (UI) 事件的方法调用了 My.Application.DoEvents 方法,这个方法在完成之前可能会被重新输入。这是因为 My.Application.DoEvents 方法将处理 Windows 消息,而 Windows 消息可能会引发事件。 |
任务
下表列出了涉及 My.Application.DoEvents 方法的任务的示例。
要执行的操作 |
请参见 |
---|---|
允许窗体在忙时响应 UI 输入 |
示例
此示例使用 My.Application.DoEvents 方法,以使 TextBox1 的 UI 可以更新。
Private Sub TestDoEvents()
For i As Integer = 0 To 10000
TextBox1.Text = i.ToString
My.Application.DoEvents()
Next
End Sub
此代码应在含有 TextBox1 组件的窗体中,该组件具有 Text 属性。
要求
命名空间:Microsoft.VisualBasic.ApplicationServices
**程序集:**Visual Basic 运行库(位于 Microsoft.VisualBasic.dll 中)
按项目类型列出的可用性
项目类型 |
可用 |
---|---|
Windows 应用程序 |
是 |
类库 |
否 |
控制台应用程序 |
否 |
Windows 控件库 |
否 |
Web 控件库 |
否 |
Windows 服务 |
否 |
网站 |
否 |
权限
以下权限可能是必需的:
权限 |
说明 |
---|---|
控制访问文件和文件夹的能力。关联的枚举:Unrestricted。 |
|
控制与用户界面和剪贴板相关的权限。关联的枚举:AllWindows。 |