首页 > 解决方案 > AutoSized 文本框中的屏幕闪烁

问题描述

MeasureString我有一个 AutoSized 文本框,它使用以下代码根据其中的文本调整其大小:

private void txt_TextChanged(object sender, EventArgs e)
{
    int xold = txt.Width;
    SizeF MessageSize = txt.CreateGraphics().MeasureString(txt.Text,txt.Font);
    txt.Width = (int)MessageSize.Width + txt.Margin.Left;
    decimal hei = Math.Ceiling((decimal)MessageSize.Height);
    int h = (int)hei;
    txt.Height = h;
    int xnew = txt.Width;
    if(xold > xnew) { txt.Left += xold - xnew; }
    else { txt.Left -= xnew - xold; }
    if (txt.Width == 0) MainPanel.Controls.Remove(txt);
}

它位于具有背景图像的面板上,因此当我开始输入时,它开始闪烁很多。我尝试启用 DoubleBufferdForm_Properties并尝试修复它:

protected override CreateParams CreateParams
        {
            get
            {
                var parms = base.CreateParams;
                parms.Style &= ~0x02000000;
                return parms;
            }
        }

它似乎没有帮助,任何想法都赞赏如何在文本框中输入时避免闪烁。谢谢 !

标签: c#winformstextboxflickerdouble-buffering

解决方案


推荐阅读