このTipsについて
描画のちらつき防止にはダブルバッファを利用することが定番ですが、
[[TabControl]] や [[TreeView]] のプロパティ DoubleBuffered は、セットしても効きません (MSDN にも明記)。
自分でコードを書くか、Windows XP以降であれば
拡張ウインドウスタイルとして WS_EX_COMPOSITED を追加することで対応可能。
(※ただし、ウインドウスタイルに CS_OWNDC を指定しているウインドウでは無効。
また、XPやVista以降のクラシックデスクトップ環境でうまくいかないネット記事あり)
サンプル
' 派生クラスでCreateParamsプロパティをオーバーライドして
' ウインドウクラスへ拡張プロパティを返す
Public Class MyTabControl
Inherits TabControl
Private WS_EX_COMPOSITED As Integer = &H2000000
Protected Overrides ReadOnly Property CreateParams() As _
System.Windows.Forms.CreateParams
Get
If Me.DesignMode Then
Return MyBase.CreateParams
End If
Dim c As CreateParams
c = MyBase.CreateParams
c.ExStyle = c.ExStyle Or Me.WS_EX_COMPOSITED
Return c
End Get
End Property
End Class
外部リンク(感謝)
EternalWindows
@IT Insider.NET - TabControl(Page)上のコントロール再描画ちらつきを抑制したい
@IT Insider.NET - TreeViewのちらつき
MSDN Library - CreateParams プロパティ
最終更新:2013年01月30日 09:46