Winforms 如何在C#windowsforms应用程序中停止闪烁?
我有主面板和Auto Scroll=true,所有控件都放在主面板上。功能正常,但当我单击任何控件或向下或向上滚动时,它会在每次单击或滚动时闪烁一秒钟 我还设置了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 =
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的面板上看到闪烁。但是上面的方法应该可以解决闪烁问题。我在表单类中粘贴了这段代码,但是它对我不起作用了。有任何建议或代码吗?可能是