谢谢

解决方案 »

  1.   

    .NET Framework 类库   Application.DoEvents 方法请参见
    Application 类 | Application 成员 | System.Windows.Forms 命名空间 | Exit | ExitThread | Run | Application 成员(Visual J# 语法) | C++ 托管扩展编程 
    要求
    平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
    语言
    C#C++JScriptVisual Basic全部显示
    处理当前在消息队列中的所有 Windows 消息。[Visual Basic]
    Public Shared Sub DoEvents()[C#]
    public static void DoEvents();[C++]
    public: static void DoEvents();[JScript]
    public static function DoEvents();备注
    当运行 Windows 窗体时,它将创建新窗体,然后该窗体等待处理事件。该窗体在每次处理事件时,均将处理与该事件关联的所有代码。所有其他事件在队列中等待。在代码处理事件时,应用程序并不响应。例如,当将另一窗口拖到该窗口前面时,该窗口不重新绘制。如果在代码中调用 DoEvents,则您的应用程序可以处理其他事件。例如,如果您有向 ListBox 添加数据的窗体,并将 DoEvents 添加到代码中,那么当将另一窗口拖到您的窗体上时,该窗体将重新绘制。如果从代码中移除 DoEvents,那么在按钮的单击事件处理程序执行结束以前,您的窗体不会重新绘制。通常,您在循环中使用该方法来处理消息。警告   调用该方法可以在某消息引发事件时导致重新输入代码。
    要求
    平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET请参见
    Application 类 | Application 成员 | System.Windows.Forms 命名空间 | Exit | ExitThread | Run | Application 成员(Visual J# 语法) | C++ 托管扩展编程 
    --------------------------------------------------------------------------------发送有关此主题的意见 © 2001-2002 Microsoft Corporation。保留所有权利。 
      

  2.   

    打个比方,你想让你的TEXTBOX从窗体左边移动到右边。用:
    for(int i=0; i<200; i++)
        textbox1.left += 1;运行结果是停顿一下,然后TEXTBOX瞬间移到右边了。
    你如果在里面加上DOEVENTS就能看到效果。
    for(int i=0; i<200; i++)
    {
        textbox1.left += 1;
        Application.DoEvents();
    }
      

  3.   

    将操作权交回操作系统,就是说程序停顿一下。
    比如发送数据时要等数据发送完才能发下一条,可以这样用:
    Application.Doevents();
    Thread.Sleep(1000);
    将操作权交回操作系统然后程序睡眠1秒钟。又如在很大的循环中好好利用这个可以使程序停顿执行,不出现用户以为“程序死掉”的现象
      

  4.   

    比如
    int i=0;
    while(true)
    {
      i++;
      Application.DoEvents();
    }如果没这句程序就假死了