tagCANDY CGI VBレスキュー(花ちゃん) - TextChanged イベントを発生させずに TextBox の Text を書き換える - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
TextChanged イベントを発生させずに TextBox の Text を書き換える
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

TextChanged イベントを発生させずに TextBox の Text を書き換える [No.347の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.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 可能なフラグで管理する方が好みなのですが、
この方法だと、継承コントロールを使わずに制御できます。
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ