Webbrowser闪烁问题

时间:2012-03-22 12:38:22

标签: c# winforms webbrowser-control flicker

我有一个带有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,它就不会闪烁。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

"不是每次都重新加载新文档,而是设置现有Document.Body的InnerHTML。"