因为borderstyle变化有一个重绘过程,要不先保存一下浏览地址,然后重新浏览一次。var
a: string;
begin
a := WebBrowser1.LocationURL;
  BorderStyle := bsNone;
  WebBrowser1.Navigate(a)
end

解决方案 »

  1.   

    在它父控件的ondraw事件中强制重绘。
      

  2.   

    To chechy:
      可能不是borderstyle导致重绘的原因。比如:把form1最大化时,这时
    也会要重绘,但web没有变化。用你的方法进行重新连接,当然可以,但是:
      1,花的时间多
      2,有的网站每次连接总会弹出些小窗口。让人感到明显不是原样。
      3,要是个多页浏览,更让人头疼。
    如果web的父控件是Tpagecontrol,改变pagecontol的tabPosition由tabTop
    到tabBottom,也会出现这种情况。我看了一些它们的句柄值,也变了。
    未改变tabPosition前各控件的句柄为:
      form1:4194762
      pagecontrol:5505506
      sheet:3670606
      web:3080724
    改变之后:
      form1:4194762
      pagecontrol:5571042
      sheet:3736142
      web:3146260
    可见,除了from1之外,什么都变了。
    能不能锁定句柄?还有,每个网页不是下载到了缓存中,不知怎样根据
    Url去提取。To darkwing
      你是指web.repaint?不好用的。
      

  3.   

    是由RecreateWnd引起的。Form被重建了一次。所以可能导致上面的控件也被重建了一编。
      

  4.   

    To chechy:
       Form即使不重建,也会出现这种情况。
       比如:TwinControl(web).Parent := panel1,如果把
             TwinControl(web).Parent := panel2,也会导致web内容的丢失。 
       是不是只要web的父控件一变化,web都要重新初始化?比如句柄,LocalUrl......都变了。
       请教,有没有更好的办法,因为重新连接的代价太高了。有没有相关的
    论坛(国内,国外),能否提示一下?