RichTextBox滚动条闪烁

时间:2013-02-26 19:55:25

标签: c# winforms richtextbox

我在Windows窗体中遇到了富文本框的问题。

我启用了垂直滚动功能,一切正常,除非我使用鼠标拖动滚动条。当我这样做时,滚动条就会停留在原位并闪烁,直到我释放拖动。当我使用鼠标上的滚轮,或者单击上/下箭头键时,栏会定期滚动而不会闪烁。

有关为何发生这种情况的任何想法?

1 个答案:

答案 0 :(得分:2)

如果其他人遇到此问题,我在此处找到了一个解决方案:http://www.angryhacker.com/blog/archive/2010/07/21/how-to-get-rid-of-flicker-on-windows-forms-applications.aspx

基本上,需要添加到form.cs文件的所有内容是:

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;
    this.MaximizeBox = true;
}

private void frmMain_Shown(object sender, EventArgs e)
{
    TurnOffFormLevelDoubleBuffering();
}