- - PR -
OnTextChangeのオーバーライド
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-25 11:42
TextBoxでOnTextChangeメソッドをオーバーライドして内容のチェックを
行いたいと思っています。 ユーザーコントロールでは何かと不便なので ユーザーコントロールを作るのではなくてTextBoxクラスのまま OnTextChangeのオーバーライドをしたいのですが可能でしょうか? ユーザーコントロールだと Public Class UserControl1 Inherits System.Windows.Forms.TextBox " Windows フォーム デザイナで生成されたコード " Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs) If Me.Text = "a" Then Me.Text = "bb" End If MyBase.OnTextChanged(e) End Sub End Class こんな感じで作成した物を普通のテキストボックスの機能としてつけたいのですが フォームにテキストボックスを貼り付けてもフォームのオーバーライドしかできま せん。 TextBoxを継承したユーザーコントロールを作るしか方法はないのでしょうか? | ||||
|
投稿日時: 2004-11-25 12:33
諸農です。
ClassLibraryプロジェクトを作成して、TextBoxクラスを 継承したクラスを作ってビルドすれば、DLL形式のアセン ブリができあがるので、それをIDEのToolBoxに登録すれば いいかと思いますが。。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-11-25 15:12
はい、継承したクラスだとできるのですが。
できればカスタムコントロールにはしたくなかったのです。 デコレーターパターン?みたいに元のコントロールのまま拡張できればいいかなと 例) Public Class clsTextBoxHighlightDecorator Private WithEvents m_txt As TextBox Public Sub New(ByVal txt As TextBox) m_txt = txt End Sub Private Sub m_txt_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles m_txt.Enter m_txt.SelectAll() End Sub End Class 使う時 Dim aa As clsTextBoxHighlightDecorator = New clsTextBoxHighlightDecorator(TextBox1) これでEnter時の動作の拡張みたいに使っています 同じように Public Class testTextbox Inherits System.Windows.Forms.TextBox Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs) If Me.Text = "a" Then Me.Text = "bb" End If MyBase.OnTextChanged(e) End Sub End Class Public Class decoratortest Private WithEvents m_txt As testTextbox Public Sub New(ByVal txt As TextBox) m_txt = CType(txt, testTextbox) End Sub End Class これだとctype時に"System.InvalidCastException: 指定されたキャストは有効ではありません"となります | ||||
|
投稿日時: 2004-11-25 16:26
delegateは試してみました?
_________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2004-11-25 17:05
ヒントありがとうございます
delegateの使い所がわからず往生しております なんとか頑張ってみます | ||||
|
投稿日時: 2004-11-25 17:16
VB.NETなら、「AddHandler」をみるといいですよ。
Visual Basic 言語リファレンス AddHandler ステートメント イベントをイベント ハンドラに関連付けます。 http://www.microsoft.com/japan/msdn/library/ja/vblr7/html/vastmAddHandlerStatement.asp _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2004-11-25 17:30
ProtectedメソッドのオーバーライドにはHandles句は不要だったと思います。
| ||||
|
投稿日時: 2004-11-25 17:59
本来の目的はオーバーライドすることじゃなくて内容のチェックですよね? FormにTextBoxを貼り付けてTextChangedイベントあたりでチェックするのは駄目ですか? |