タイトル | : 基底関数の振る舞い |
記事No | : 4852 |
投稿日 | : 2007/01/19(Fri) 10:39 |
投稿者 | : DOON |
DOONです。 お世話になっています。
下の質問でもお世話になりました。 現在vb.net 2005 windowsxpでユーザーコントロールを作成中です。 そこで、基底関数の振る舞いについて分からなくなりました。 ご存知の方、教えてください。 少し文章が長くなりますが、ご了承ください。
今作成している、ユーザーコントロールはTextBoxのみの作成です。 TextBoxをそのまま継承して作成しています。 ここで例として、TextChangedのイベントの中身を実装したユーザーコントロールを 作成しようとしています。 ユーザーコントロールのソース内に、 OnTextChangedを書いてみました。以下になります。 Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
MyBase.OnTextChanged(e) End Sub すると自動でMyBase.OnTextChanged(e)が書き込まれました。 そのあと、テスト用に、同じソリューションファイル内に WindowsApplicationプロジェクトを作成。 フォームにそのユーザーコントロールを貼り付けました。 貼り付けたテキストボックスをTextBox1とします。 そのWindowsApplicationのフォームのソースに Private Sub TextBox1_TextChanged(ByVal .....
End Sub と書き込みました。 実際WindowsApplicationを実行してみました。 textbox1に値を代入すると、 ユーザーコントロール内のOnTextChangedが走ります。 そして、基底関数を呼びます。 その後にWindowsApplicationのTextBox1_TextChangedが走ります。
この振る舞いが正しいとは思うので、それを踏まえてユーザーコントロールを 作成しようと思いました。そもそもWindowsApplication内にTextBox1_TextChanged という、ソースは書かないようにはするつもりです。
質問はこのMyBase.OnTextChanged(e)はユーザーコントロールの 基底関数のメソッドを呼ぶのではないのですか? 私の中ではユーザーコントロールの基底関数はSystem.windows.formだと思うのですが? 大きな勘違いがありそうです。
どなたか教えていただけませんでしょうか?
|