【问题标题】:how to stop flickering in C# windowsforms form Application?如何在 C# windows 窗体窗体应用程序中停止闪烁?
【发布时间】:2013-04-07 05:54:57
【问题描述】:

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

我也设置了

 DoubleBuffered = true; 

但它不适合我。

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

【问题讨论】:

标签: winforms c#-4.0 panel flicker doublebuffered


【解决方案1】:

您可以尝试将其放入您的表单类中:

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 的面板上没有闪烁。但以上方法应该可以解决闪烁问题。

【讨论】:

  • 我将此代码粘贴到我的表单类中,但它对我没有任何建议或代码?
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多