"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية التخلص من RichTextBox وميض عند تسليط الضوء على بناء الجملة؟

كيفية التخلص من RichTextBox وميض عند تسليط الضوء على بناء الجملة؟

نشر في 2025-04-17
تصفح:755

How to Eliminate RichTextBox Flickering During Syntax Highlighting?
الحل

يتضمن الحل الحالي تجاوز الدالة "WNDPROC" لاعتراض رسائل إعادة الشطب وقمعها. ومع ذلك ، فإن هذا النهج ليس عمليًا بالنسبة للوظائف الخارجية التي تعمل مع RichTextBox المقدمة. تقوم هذه الطرق بإنشاء رسالة WM_SetRedRaw لقمع إعادة الطلاء. باستخدام system.windows.forms ؛ باستخدام System.Runtime.InteropServices ؛ class myrichtextbox: RichTextBox { public void beginupdate () { sendMessage (this.handle ، wm_setredraw ، (intptr) 0 ، intptr.zero) ؛ } public void endupdate () { sendMessage (this.handle ، wm_setredraw ، (intptr) 1 ، intptr.zero) ؛ this.invalidate () ؛ } [Dllimport ("user32.dll")] intptr extern extern extern extern extatic intptr sendMessage (intptr hwnd ، int msg ، intptr wp ، intptr lp) ؛ const private int wm_setredraw = 0x0b ؛ }

الاستخدام

يمكنك الآن استخدام هذه الأساليب لتعطيل وتمكين إعادة الطلاء داخل وظيفة تمييز بناء الجملة. تعمل مباشرة قبل وبعد تحديث النص. // تعطيل إعادة الطلاء // تحديث النص sendMessage (this.handle ، wm_setredraw ، (intptr) 1 ، intptr.zero) ؛ // تمكين إعادة الطلاء this.invalidate () ؛

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3