Winforms 如何在C#windowsforms应用程序中停止闪烁?

Winforms 如何在C#windowsforms应用程序中停止闪烁?,winforms,c#-4.0,panel,flicker,doublebuffered,Winforms,C# 4.0,Panel,Flicker,Doublebuffered,我有主面板和Auto Scroll=true,所有控件都放在主面板上。功能正常,但当我单击任何控件或向下或向上滚动时,它会在每次单击或滚动时闪烁一秒钟 我还设置了 DoubleBuffered = true; 但这对我不起作用 请任何人给我建议解决方案或新的代码,可以帮助我,我已经花了2天的时间在这个问题上。 提前感谢。您可以尝试将其放入forms类中: private const int WM_HSCROLL = 0x114; private const int WM_VSCROLL =

我有主面板和Auto Scroll=true,所有控件都放在主面板上。功能正常,但当我单击任何控件或向下或向上滚动时,它会在每次单击或滚动时闪烁一秒钟

我还设置了

 DoubleBuffered = true; 
但这对我不起作用

请任何人给我建议解决方案或新的代码,可以帮助我,我已经花了2天的时间在这个问题上。
提前感谢。

您可以尝试将其放入forms类中:

private const int WM_HSCROLL = 0x114;
private const int WM_VSCROLL = 0x115;

protected override void WndProc (ref Message m)
{
    if ((m.Msg == WM_HSCROLL || m.Msg == WM_VSCROLL)
        && (((int)m.WParam & 0xFFFF) == 5))
    {
        // Change SB_THUMBTRACK to SB_THUMBPOSITION
        m.WParam = (IntPtr)(((int)m.WParam & ~0xFFFF) | 4);
    }
    base.WndProc (ref m);
}
您还可以将其添加到窗体类构造函数中:

SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);

我使用的是windows 8,我不会从AutoScroll=true的面板上看到闪烁。但是上面的方法应该可以解决闪烁问题。

我在表单类中粘贴了这段代码,但是它对我不起作用了。有任何建议或代码吗?可能是