C# 如何在每次单击窗口窗体时停止闪烁窗体?

C# 如何在每次单击窗口窗体时停止闪烁窗体?,c#,.net,forms,panel,C#,.net,Forms,Panel,我有一个窗体大小的主面板,并在上面放置了许多控件 当我在窗体上单击(特别是在主面板的滚动条上的任何位置)时,它每次都会闪烁,看起来很奇怪 所以,请任何人告诉我这背后的原因是什么,或者建议我用代码来阻止这一切。提前感谢。在单个表单中添加大量控件并不好,但对于在表单集属性中停止闪烁,请将双缓冲设置为真 已编辑 创建自定义面板并将DoubleBuffered设置为true: public partial class CPanel : Panel { public CPanel () {

我有一个窗体大小的主面板,并在上面放置了许多控件

当我在窗体上单击(特别是在主面板的滚动条上的任何位置)时,它每次都会闪烁,看起来很奇怪


所以,请任何人告诉我这背后的原因是什么,或者建议我用代码来阻止这一切。提前感谢。

在单个表单中添加大量控件并不好,但对于在表单集属性中停止闪烁,请将双缓冲设置为

已编辑

创建自定义面板并将DoubleBuffered设置为true:

public partial class CPanel : Panel
{
    public CPanel ()
    {
        SetStyle(ControlStyles.AllPaintingInWmPaint, true);
        SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
        UpdateStyles();
    }
}
如何 将新类插入到项目中,并将其代码替换为:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace yournamespace
{
    public partial class CPanel : Panel
    {
        public CPanel()
        {
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            UpdateStyles();
        }
    }
}

构建你的
应用程序
->转到你的
表单设计
n->现在你在
工具箱中有了一个新控件
:在表单中插入新控件->将控件从旧面板复制到新面板

大约50个,但在我的上一个应用程序中,我也添加了太多控件,但它工作正常。我应该把CPanel的主体放进去吗(以上)方法进入我的主面板主体?让我们尽可能复制