C# Winform解决窗体大量控件加载闪烁卡顿的问题

1.重写 CreateParams 属性:通过重写CreateParams属性,为窗体或控件设置扩展窗口样式WS_EX_COMPOSITED,可启用系统级的双缓冲,能有效减少窗体和控件的闪烁,尤其是在控件较多的复杂界面中。

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED
        return cp;
    }
}

注意:我在使用上面的代码解决界面卡顿问题时候,设置了Form为无边框窗体,导致界面最小化后重新打开会出现界面显示不全的功能,需要进行一个强制重绘的动作

protected override void OnResize(EventArgs e)
{
    base.OnResize(e);

    // 当窗口从最小化状态恢复时
    if (WindowState == FormWindowState.Normal || WindowState == FormWindowState.Maximized)
    {
        // 强制重绘整个窗口
        this.Invalidate(true);
        this.Update();
        // 对于复杂界面,可额外调用Refresh()确保立即生效
        this.Refresh();
    }
}

 

posted @ 2025-07-08 20:18  田宏伟_thw  阅读(282)  评论(0)    收藏  举报