📄 b971123.gb_
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>进阶篇:为什麼图片不會立刻显示出来?</TITLE>
<META NAME="GENERATOR" CONTENT="Mozilla/3.01Gold (Win95; I) [Netscape]">
<META NAME="Author" CONTENT="KJ Wang">
</HEAD>
<BODY TEXT="#202020" BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#000080" ALINK="#FF0000">
<H2 ALIGN=CENTER><A HREF="vbex.htm">VB5 实战讲座</A></H2>
<H3 ALIGN=CENTER><A HREF="../vbweeks.htm">每周一问</A>: 挑战您的 VB 功力 (进阶篇, 97/11/23)</H3>
<H2>
<HR WIDTH="100%"></H2>
<TABLE WIDTH="100%" >
<TR VALIGN=TOP>
<TD NOWRAP>Q:</TD>
<TD>有一程式含有两个 Form, 其中 Form2 的 Picture 属性设定成一图片, 而以下是
Form1 显示 Form2 的程式:
<UL>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=4 WIDTH="250" >
<TR>
<TD>Form2.Show
<P>' 延迟 2 秒 <BR>
Tm1 = Timer <BR>
While Timer - Tm1 < 2 <BR>
Wend</P>
</TD>
</TR>
</TABLE>
</UL>
<P>以上程式的目的是希望显示 Form2 的图片两秒之後, Form1 才继续执行, 结果竟然是
2 秒之後, Form2 的图片才显示出来。 为什麼图片會延迟显示呢? 解决之道又如何?</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD>A:</TD>
<TD>一般而言, 绘图會比一般的指令来得费时, 因此, Windows 會延後绘图指令的执行,
也就是说, 直到其他指令都执行完毕之後, 才會轮到绘图指令的执行, 在以上的
Form1 程式中, 由於呼叫 Form2.Show 之後, 又执行了一个费时 2 秒的 While
回圈, 因此, Form2 的图片必须等待 2 秒钟, 才會被描绘出来。
<P>解决的方法有二:</P>
<P><FONT COLOR="#0000FF">方法一</FONT>: 在 While 回圈中增加 DoEvents 的叙述,
如下:</P>
<UL>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=4 WIDTH="250" >
<TR>
<TD>
<PRE><FONT SIZE=+1>Form2.Show </FONT></PRE>
<PRE><FONT SIZE=+1>' 延迟 2 秒
Tm1 = Timer
While Timer - Tm1 < 2
<FONT COLOR="#FF0000"> DoEvents
</FONT>Wend</FONT></PRE>
</TD>
</TR>
</TABLE>
</UL>
<P>DoEvents 的作用是「短暂地停止执行」, 由於此一暂停之动作, 使得绘图指令有机會被执行,
於是 Form2 的图片便可以在 While 回圈执行的阶段就被显示出来。</P>
<P><FONT COLOR="#0000FF">方法二</FONT>: 在 Form2.Show 之後, 立刻呼叫
Form2.Refresh, 如下:</P>
<UL>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=4 WIDTH="250" >
<TR>
<TD>Form2.Show<BR>
Form2.<FONT COLOR="#FF0000">Refresh</FONT>
<P>' 延迟 2 秒 <BR>
Tm1 = Timer <BR>
While Timer - Tm1 < 2 <BR>
Wend</P>
</TD>
</TR>
</TABLE>
</UL>
<P>Refresh 的作用是告诉 Windows, 不管绘图动作有多慢, 现在立刻把图画出来,
当然, Windows 會照办的。</P>
</TD>
</TR>
</TABLE>
<P>
<HR WIDTH="100%"></P>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -