浏览器闪烁问题

本文关键字:问题 闪烁 浏览器 | 更新日期: 2023-09-27 18:28:44

我有一个带有web浏览器控件的windows窗体应用程序,当我在web浏览器控件上重新加载任何页面时,应用程序的标题都会闪烁,这很奇怪,因为我使用该代码来尽可能减少闪烁:

    public Form1()
    {
        InitializeComponent();
        //SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
        this.SetStyle(ControlStyles.UserPaint, true);
        this.SetStyle(ControlStyles.DoubleBuffer, true);
        this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        this.SetStyle(ControlStyles.UserPaint, true);
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, false);
        this.SetStyle(ControlStyles.Opaque, false);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        this.SetStyle(ControlStyles.ResizeRedraw, true);
    }


    int originalExStyle = -1;
    bool enableFormLevelDoubleBuffering = true;
    protected override CreateParams CreateParams
    {
        get
        {
            if (originalExStyle == -1)
                originalExStyle = base.CreateParams.ExStyle;
            CreateParams cp = base.CreateParams;
            if (enableFormLevelDoubleBuffering)
                cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
            else
                cp.ExStyle = originalExStyle;
            return cp;
        }
    }
    private void TurnOffFormLevelDoubleBuffering()
    {
        enableFormLevelDoubleBuffering = false;
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        TurnOffFormLevelDoubleBuffering();
    }

**它只在安装IE8时闪烁,但如果安装了IE9,则不会闪烁。

浏览器闪烁问题

这些建议的前提是问题也会在IE中表现出来。

你可以尝试两件事:
-安装最新的视频驱动程序
-尝试更新Adobe Flash。(你可以用无插件启动IE,看看flash是否是罪魁祸首。)

"与其每次都重新加载新文档,不如设置现有document.Body的InnerHTML。"