From 47f8ca7f48ba6b1b2cd186fdf8dbcd3c0085df5a Mon Sep 17 00:00:00 2001 From: H Date: Sun, 20 Sep 2020 20:55:39 +0800 Subject: [PATCH] =?UTF-8?q?SizeChange=E5=AF=BC=E8=87=B4node=E9=87=8D?= =?UTF-8?q?=E7=BB=98=E9=97=AA=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SunnyUI/Controls/UINavMenu.cs | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/SunnyUI/Controls/UINavMenu.cs b/SunnyUI/Controls/UINavMenu.cs index de7812b7..35553684 100644 --- a/SunnyUI/Controls/UINavMenu.cs +++ b/SunnyUI/Controls/UINavMenu.cs @@ -154,19 +154,27 @@ namespace Sunny.UI /// /// SizeChange导致treeNode闪屏 /// - protected override CreateParams CreateParams + const int TVM_SETEXTENDEDSTYLE = 0x112C; + const int TVS_EX_DOUBLEBUFFER = 0x0004; + [DllImport("user32.dll", CharSet = CharSet.Auto)] + private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); + private void UpdateExtendedStyles() { - get - { - CreateParams cp = base.CreateParams; - if (!DesignMode) - { - cp.ExStyle |= 0x02000000; - } - return cp; + int Style = 0; - } + if (DoubleBuffered) + Style |= TVS_EX_DOUBLEBUFFER; + + if (Style != 0) + SendMessage(Handle, TVM_SETEXTENDEDSTYLE, new IntPtr(TVS_EX_DOUBLEBUFFER), new IntPtr(Style)); } + + protected override void OnHandleCreated(EventArgs e) + { + base.OnHandleCreated(e); + UpdateExtendedStyles(); + } + protected override void OnSizeChanged(EventArgs e) { base.OnSizeChanged(e);