mengoptimumkan .net kawalan mengecat semula dengan wm_setredraw
. NET pemaju sering perlu berhenti semula sementara dalam kawalan dan anak -anaknya semasa kemas kini yang luas. Walaupun dan SuspendLayout
mengurus susun atur, mereka tidak sepenuhnya menindas semula. ResumeLayout
Penyelesaian wm_setredraw
Mesej, dihantar ke pemegang tetingkap kawalan, menyediakan penyelesaian yang mantap. Parameter Boolean mengawal redrawing: WM_SETREDRAW
melumpuhkan, dan false
membolehkannya. true
Melaksanakan Kaedah Dusigrawing dan Resumedrawing
Kelas yang diselaraskan ini merangkumi fungsi:
<code class="language-csharp">public static class ControlPainting { [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParam); private const int WM_SETREDRAW = 11; public static void SuspendPainting(Control parent) { SendMessage(parent.Handle, WM_SETREDRAW, false, 0); } public static void ResumePainting(Control parent) { SendMessage(parent.Handle, WM_SETREDRAW, true, 0); parent.Refresh(); } }</code>
Contoh Penggunaan
untuk mengelakkan mengecat semula:
<code class="language-csharp">ControlPainting.SuspendPainting(myControl); // ... perform modifications ... ControlPainting.ResumePainting(myControl);</code>
bacaan selanjutnya
Untuk maklumat yang lebih mendalam, rujuk sumber-sumber ini:
Atas ialah kandungan terperinci Bagaimanakah saya dapat menggantung dan meneruskan lukisan dengan cekap untuk kawalan .NET dan anak -anaknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!