Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
継承について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=2359#CommentId19082
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
るきお
 ()
投稿日時
2008/5/1 07:24:00
>と、OnKeyPress をコールしていますが、この Mybase は基本クラスで基本クラスの OnKeyPress を呼び出しているのですか?
>では、このオーバーライドされた OnKeyPress を呼び出すのは?
面白いご指摘ですと思いました。
標準的な処理の流れは次のようになっています。
トリガー→TextBox.OnKeyPress→TextBoxのKeyPressイベント
(「トリガー」はもともとOnKeyPressをコールしていたものです。
OnKeyPressは.NET Frameworkからコールされます。
興味があれば呼び出し履歴をさかのぼってみてください)
ここでOnKeyPressを上書きすると流れは次のようになります。
トリガー→TextBoxEx.OnKeyPress
さらにTextBoxEx.OnKeyPressがTextBox.OnKeyPressを呼び出すので、こうなります。
トリガー→TextBoxEx.OnKeyPress→TextBox.OnKeyPress→TextBoxのKeyPressイベント
これでOnKeyPressを上書きしてもちゃんとイベントが発生するようになります。
ただ、これだけだと上書きする意味がないのでOnKeyPressに独自の処理を追加します。
そうすると、こうなります。
トリガー→TextBoxEx.OnKeyPress
→①TextBox.OnKeyPress→TextBoxのKeyPressイベント
→②独自の処理
ちょっと表現しにくいのですが、①と②は処理の順番です。どちらもTextBoxEx.OnKeyPressから呼ばれます。
ですから質問の答えは、
>基本クラスの OnKeyPress を呼び出しているのですか?
はい、そうです。
>では、このオーバーライドされた OnKeyPress を呼び出すのは?
もともと、OnKeyPressを読んでいたものです。上記でトリガーと表現しているものです。
または、自分でOnKeyPressを呼び出すプログラムを書いた場合には、そのプログラムからも呼ばれます。