WindowsFormsApplicationBase.DoEvents 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
处理消息队列中当前的所有Windows消息。
public:
void DoEvents();
public void DoEvents();
member this.DoEvents : unit -> unit
Public Sub DoEvents ()
示例
此示例使用 My.Application.DoEvents 该方法允许 UI 进行 TextBox1 更新。
Private Sub TestDoEvents()
For i As Integer = 0 To 10000
TextBox1.Text = i.ToString
My.Application.DoEvents()
Next
End Sub
此代码应采用具有具有 TextBox1 属性的组件的 Text 窗体。
注解
此方法 My.Application.DoEvents 允许应用程序处理在代码运行时可能引发的其他事件。 该方法 My.Application.DoEvents 的行为与 DoEvents 该方法相同。
运行Windows 窗体应用程序时,它会创建一个新窗体,然后等待处理事件。 每次表单处理事件(如按钮单击)时,它都会处理与该事件关联的所有代码。 所有其他事件都在队列中等待。 当代码处理事件时,应用程序不会响应。 例如,如果另一个窗口被拖动到顶部,则窗口不会重新绘出。
如果在代码中调用 My.Application.DoEvents ,应用程序可以处理其他事件。 例如,如果代码将数据添加到 ListBox 循环中,并在它调用 My.Application.DoEvents的每个循环步骤之后,当另一个窗口被拖动到循环上时,窗体将重新修补。 如果从代码中删除 My.Application.DoEvents ,则在按钮的单击事件处理程序完成执行之前,窗体将不会重新修补。
通常,在循环中使用此方法来处理消息。
注释
该方法 My.Application.DoEvents 不会以与表单完全相同的方式处理事件。 使用多线程使表单直接处理事件。 有关详细信息,请参阅 使用线程和线程处理。
Caution
如果处理用户界面(UI)事件的方法调用 My.Application.DoEvents 该方法,则该方法可能会在方法完成之前重新输入。 之所以发生这种情况,是因为 My.Application.DoEvents 方法处理Windows消息,Windows消息可能会引发事件。
下表列出了涉及 My.Application.DoEvents 该方法的任务的示例。
| 收件人 | 请参阅 |
|---|---|
| 允许窗体在忙碌时响应 UI 输入 | 演练:处理事件 |
按项目类型提供可用性
| 项目类型 | 可用的 |
|---|---|
| Windows 窗体应用程序 | Yes |
| 类库 | 否 |
| 控制台应用程序 | 否 |
| Windows 窗体控件库 | 否 |
| Web 控件库 | 否 |
| Windows 服务 | 否 |
| 网站 | 否 |