私はそれを考え出した。ちらつきの問題が発生するのは、 a TreeView
(おそらく別のコントロールが同じ問題を抱えている可能性があります) の場合です。SplitContainer
非常に単純なプロトタイプで試してみました。これは、コンテナーの 1 つと 1 つだけの新しいもので、一部のノードでちらつきが既に見られますWinform
。私は多くのことを試しましたが、仕事をしたように見えるのは次のとおりです。SplitContainer
TreeView
this.SetStyle(ControlStyles.DoubleBuffer, true);
すべてのちらつきを完全に排除したもう1つのことはこれです:
int style = NativeWinAPI.GetWindowLong(this.Handle, NativeWindowAPI.GWL_EXSTYLE);
style |= NativeWinAPI.WS_EX_COMPOSITED;
NativeWinAPI.SetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE, style);
両方ともForm_Load
.
NativeWinAPI クラス:
using System.Runtime.InteropServices;
internal static class NativeWinAPI
{
internal static readonly int GWL_EXSTYLE = -20;
internal static readonly int WS_EX_COMPOSITE = 0x02000000;
[DllImport("user32")]
internal static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32")]
internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, dwNewLong);
}
これにより、 内のコントロールのちらつきが完全に停止しSplitContainer
ます。これで誰かを助けることができることを願っています。