【发布时间】:2018-10-12 13:36:59
【问题描述】:
我有一个应用程序,它在我制作的用户控件中显示数据(股市)。在我的应用程序中,单个屏幕上可能有多个用户控件来分析多只股票。 鉴于该功能,用户可以在屏幕上从 1 个控件移动到多个控件。 此功能给出了闪烁的问题。为了解决闪烁问题,我使用了以下代码启用的双缓冲 -
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
上面的代码肯定有助于消除闪烁问题。但又产生了另一个问题—— 有时它会在该用户控件中提供一个黑色窗口。我在代码流中发现的一切都很完美,但找不到这个黑窗的原因。
删除双缓冲可以提供正确的输出,但又会出现闪烁。
这是一张图片,可以让您更好地理解问题 -
【问题讨论】:
-
This 是打开(和关闭)数据库的另一种方法
-
你试过
Control.SetStyle()加ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.UserPaint, true
标签: c# winforms double-buffering paintevent