public
class
CustomListView : System.Windows.Forms.ListView
{
public CustomListView()
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint
{
public CustomListView()
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint
|
ControlStyles.UserPaint,
true
);
UpdateStyles();
}
}
UpdateStyles();
}
}
双缓冲技术实现绘制图形不闪烁
protected SetStyle ( ControlStyles flag, value )
如果将 AllPaintingInWmPaint 位设置为 true,则将忽略 WM_ERASEBKGND 窗口消息,
而直接从 WM_PAINT 窗口消息调用 OnPaintBackground 和 OnPaint 方法。
这通常可减少闪烁,除非其他控件将 WM_ERASEBKGND 窗口消息发送到该控件。
可以发送 WM_ERASEBKGRND 窗口消息以达到与 SupportsTransparentBackColor 相似的假透明效果;
例如,具有平面外观的 ToolBar 就采用这种方法。
若要完全启用双缓冲,可以将 OptimizedDoubleBuffer 和 AllPaintingInWmPaint 位设置为 true。
但是,启用双缓冲的首选方法是将该控件的 DoubleBuffered 属性设置为 true,这会产生同样的结果。
ListView ..::. DoubleBuffered 属性
此成员重写
Control ..::. DoubleBuffered ,且该主题可能包括更完整的文档。
命名空间:
System.Windows.Forms
程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)
id=tgt2 class=tgtSentence sentenceid="298a89f987d308c2630bd17093fc27d6" runat="server" xmlns="http://msdn2.microsoft.com/mtps" mtps:Sentence msdn2.microsoft.com>如果应使用双缓冲绘制控件的图面,则为 true;否则为 false。 mtps:Sentence msdn2.microsoft.com>
获取或设置一个值,该值指示此控件是否应使用辅助缓冲区重绘其图面,以减少或避免闪烁。
程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)
protected override
bool DoubleBuffered {
get;
set; }
属性值
类型: System ..::. Booleanid=tgt2 class=tgtSentence sentenceid="298a89f987d308c2630bd17093fc27d6" runat="server" xmlns="http://msdn2.microsoft.com/mtps" mtps:Sentence msdn2.microsoft.com>如果应使用双缓冲绘制控件的图面,则为 true;否则为 false。 mtps:Sentence msdn2.microsoft.com>
成员名称 | 说明 | |
---|---|---|
AllPaintingInWmPaint | 如果为 true,控件将忽略 WM_ERASEBKGND 窗口消息以减少闪烁。仅当 位设置为 true 时,才应当应用该样式。 | |
CacheText | 如果为 true,控件保留文本的副本,而不是在每次需要时从 Handle 获取文本副本。此样式默认为 false。此行为提高了性能,但使保持文本同步变得困难。 | |
ContainerControl | 如果为 true,则控件是类似容器的控件。 | |
DoubleBuffer | 如果为 true,则绘制在缓冲区中进行,完成后将结果输出到屏幕上。双重缓冲区可防止由控件重绘引起的闪烁。如果将 设置为 true,则还应当将 UserPaint 和 AllPaintingInWmPaint 设置为 true。 | |
EnableNotifyMessage | 如果为 true,则为发送到控件的 WndProc 的每条消息调用 OnNotifyMessage 方法。此样式默认为 false。 在部分可信的情况下不工作。 | |
FixedHeight | 如果为 true,则自动缩放时,控件具有固定高度。例如,如果布局操作试图重新缩放控件以适应新的 ,则控件的 Height 将保持不变。 | |
FixedWidth | 如果为 true,则自动缩放时,控件具有固定宽度。例如,如果布局操作试图重新缩放控件以适应新的 Font,则控件的 Width 将保持不变。 | |
Opaque | 如果为 true,则控件被绘制为不透明的,不绘制背景。 | |
OptimizedDoubleBuffer | 如果为 true,则该控件首先在缓冲区中绘制,而不是直接绘制到屏幕上,这样可以减少闪烁。如果将此属性设置为 true,则还应当将 AllPaintingInWmPaint 设置为 true。 | |
ResizeRedraw | 如果为 true,则在调整控件大小时重绘控件。 | |
Selectable | 如果为 true,则控件可以接收焦点。 | |
StandardClick | 如果为 true,则控件将实现标准 Click 行为。 | |
StandardDoubleClick | 如果为 true,则控件将实现标准 DoubleClick 行为。如果 StandardClick 位未设置为 true,则忽略此样式。 | |
SupportsTransparentBackColor | 如果为 true,控件接受 alpha 组件小于 255 的 BackColor 以模拟透明。仅在 UserPaint 位设置为 true 并且父控件派生自 Control 时才模拟透明。 | |
UserMouse | 如果为 true,则控件完成自己的鼠标处理,因而鼠标事件不由操作系统处理。 | |
UserPaint | 如果为 true,控件将自行绘制,而不是通过操作系统来绘制。如果为 false,将不会引发 Paint 事件。此样式仅适用于派生自 Control 的类。 | |
UseTextForAccessibility | 指定该控件的 Text 属性的值,如果已设置,则可确定该控件的默认 Active Accessibility 名称和快捷键。 |