【问题标题】:how can i stop form flickering when using tabControl.TabPages[0].Controls.Add()?使用 tabControl.TabPages[0].Controls.Add() 时如何停止表单闪烁?
【发布时间】:2012-11-29 11:46:11
【问题描述】:

我正在使用下面的代码将表单添加到 tabControls tabPage

private void btnStudents_Click(object sender, EventArgs e)
    {
       foreach (Form c in tabStudents.TabPages[0].Controls)
        {
            tabStudents.TabPages[0].Controls.Remove(c);
            c.Dispose();
        }

        //load form
        StudentsMasterForm f = new StudentsMasterForm
        {
            TopLevel = false,
            FormBorderStyle = FormBorderStyle.None,
            Dock = DockStyle.Fill
        };

        tabStudents.TabPages[0].Controls.Add(f);
        f.Show();
    }

但问题是,单击按钮时(即加载表单时),表单闪烁过多。我试过使用tabCustomersAndOrders.TabPages[0].SuspendLayout(); tabCustomersAndOrders.TabPages[0].ResumeLayout(); ` 但闪烁并没有消失。

我想尽可能顺利地从一种形式过渡到另一种形式。

【问题讨论】:

标签: c# winforms visual-studio-2012 tabcontrol .net-4.5


【解决方案1】:

在 TabControl 上启用双缓冲可能会有所帮助。使用双缓冲,控件图形全部渲染到内存中,只有在所有控件渲染完成后才显示。

这意味着在完成之前会有明显的延迟,但应该消除多个控件渲染的闪烁效果。

以下将启用双缓冲:

myTabControl.SetStyle(ControlStyles.DoubleBuffer | 
      ControlStyles.UserPaint | 
      ControlStyles.AllPaintingInWmPaint,
      true);

另一种选择(我推荐的)是从不同的角度看待问题。有没有什么办法可以改变 UI 设计,以便预先缓存这种表单填充,或者在渲染到屏幕之前发生?

【讨论】:

    【解决方案2】:

    只需将其粘贴到您的主 GUI 中:

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

    这应该可以解决您的问题。至少从我在网络上搜索的许多内容来看,这一项有所帮助。

    【讨论】:

      【解决方案3】:

      为了将此问题标记为已回答,我在这里发布了一个指向另一个 stackoverflow 问题的链接,该问题可以解决我的问题。

      这里是链接how to fix the flickering in user controls

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-18
        • 2018-12-23
        • 2011-12-24
        相关资源
        最近更新 更多