投稿者 るきお  () 投稿日時 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を呼び出すプログラムを書いた場合には、そのプログラムからも呼ばれます。