tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
TextChanged イベントを発生させずに TextBox の Text を書き換える ( No.0 )  [親スレッドへ]
日時: 2021/03/23 14:41
名前: 魔界の仮面弁士

***********************************************************************************
* カテゴリー:[テキストボックス][][]  
* キーワード: TextChanged, , , , ,  
***********************************************************************************

複数の TextBox を TextChanged イベントで相互に書き換えるような画面で、
イベント連鎖をフラグで回避するのが面倒だという話があったので、
TextChanged イベントを発生させること無く Text を書き換えられるような
拡張メソッドを作ってみました。

「TextBox1.Text = newString」というコードを
「TextBox1.SetText(newString)」という記述に置き換えて使います。


Public Module TextBoxBaseExtensions
    <System.Runtime.CompilerServices.Extension>
    Public Sub SetText(this As TextBoxBase, value As String)
        Static forceWindowText As System.Reflection.MethodInfo = GetType(System.Windows.Forms.TextBoxBase).GetMethod("ForceWindowText", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance)
        forceWindowText.Invoke(this, New Object(0) {value})
    End Sub
End Module


個人的には OnTextChanged メソッドをオーバーライドして
On/Off 可能なフラグで管理する方が好みなのですが、
この方法だと、継承コントロールを使わずに制御できます。



 [スレッド一覧へ] [親スレッドへ]