我有主面板和自动滚动=true,所有控件都放在主面板上。功能工作正常,但是当我单击任何控件或向下或向上滚动时,每次单击或滚动时它都会开始闪烁一秒钟,
我也设置
DoubleBuffered = true;
但这对我不起作用。
任何人都可以建议我解决方案或可以帮助我的新代码我alrasy在这个问题上花了2天时间。提前致谢。
我有主面板和自动滚动=true,所有控件都放在主面板上。功能工作正常,但是当我单击任何控件或向下或向上滚动时,每次单击或滚动时它都会开始闪烁一秒钟,
我也设置
DoubleBuffered = true;
但这对我不起作用。
任何人都可以建议我解决方案或可以帮助我的新代码我alrasy在这个问题上花了2天时间。提前致谢。
您可以尝试将其放入您的表单类中:
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 的面板上没有闪烁。但上述方法应该可以解决闪烁问题。