- 日時: 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 可能なフラグで管理する方が好みなのですが、 この方法だと、継承コントロールを使わずに制御できます。
|