richtextboxの塗り直しの無効化repaint for rich textbox構文の強調表示
ユーザー入力中にrichextboxでハイライトを実行するときに、フリッケンティングを解決するには、&&]
を解決する必要があります。 solution
現在のソリューションは、「wndproc」関数をオーバーライドして、塗り直しメッセージを傍受して抑制することを伴います。ただし、このアプローチは、提供されたrichtextboxを使用して作業する外部関数には実用的ではありません。これらのメソッドは、wm_setredrawメッセージを生成して、繰り返しを抑制します。 system.windows.formsを使用しています。 system.runtime.interopervicesを使用します。 クラス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")] private static extptr sendmessage(intptr hwnd、int msg、intptr wp、intptr lp); private const int wm_setredraw = 0x0b; }
usage
これらのメソッドを使用して、構文の強調表示内での表現を無効にして有効にすることができます。テキストの更新の前後に直接機能します。 //再送信を無効にします //テキストを更新します sendMessage(this.handle、wm_setredraw、(intptr)1、intptr.zero); //補給を有効にします this.invalidate();
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3