テキストボックスを継承したクラスを作成しようと思っているのですが
以下の2種類のLostFocusイベントの書き方に違いがあるのでしょうか?
オーバーライドして書くのが普通なのでしょうか?
Public Class Class1
Inherits TextBox
Protected Sub Class1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus
Me.Text = "てすと"
End Sub
Protected Overrides Sub OnLostFocus(ByVal e As System.EventArgs)
MyBase.OnLostFocus(e)
Me.Text = "てすと"
End Sub
End Class
> オーバーライドして書くのが普通なのでしょうか?
はい。「Onイベント」メソッドを Overrides する事をおすすめします。
http://msdn.microsoft.com/ja-jp/library/tc568dw7.aspx
> 違いがあるのでしょうか?
オーバーライド法なら、「Textを書き換えてからLostFocusを発生させる」のか
「LostFocusを発生させてからTextを書き換える」のかを選択できます。
また、継承元クラスのイベントと継承先クラスのイベントの呼び分けもできます。
たとえば下記のような処理にすると、違いが見えてくるかもしれません。
Class Class1
Inherits TextBox
Protected Sub Class1_LostFocus(sender As Object, e As EventArgs) Handles Me.LostFocus
'LostFocusイベントで、テキスト変更を行う。
Me.Text = Me.Name & "_LostFocus"
End Sub
Protected Overrides Sub OnLostFocus(e As EventArgs)
'Onメソッドでは、背景色を変更する。
Me.BackColor = Color.Cyan
'(継承元クラスの)LostFocus イベントを発生させる。
MyBase.OnLostFocus(e)
End Sub
'クリックされたら、(継承元クラスの)LostFocusイベントを発生させる
Protected Overrides Sub OnClick(e As EventArgs)
'MyClass.OnLostFocus(EventArgs.Empty)
MyBase.OnLostFocus(EventArgs.Empty)
MyBase.OnClick(e)
End Sub
End Class
魔界の仮面弁士さん、ありがとうございます。
違いがわかり、すっきりしました。