- - PR -
【VB.NET】TextBoxのClearメソッド
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-12-03 17:35
VB.NETのTextBoxの継承コントロールで、ClearメソッドをOverridesしようとしたのですが、ClearメソッドはOverridableではないのでShadowsするようにとエラーメッセージが出ました。
そこでShadowsにしたのですが、Clearメソッドを実行するとBaseのメソッドしか処理されません。 だれか分かる方、いませんか? |
|
投稿日時: 2004-12-03 17:53
Clear()メソッドを呼ぶ際、継承コントロールのインスタンス変数から呼んでいますか?
例えば Dim text1 as TextBox = new TextBox '継承コントロール Dim text2 as TextBoxEx = new TextBoxEx text1.Clear() text2.Clear() でどちらが処理されるか試してみてください。 |
|
投稿日時: 2004-12-03 19:00
Osです。
Overridableでないメソッドは、Overloads で試してください。 |
|
投稿日時: 2004-12-03 20:37
burton999さん、Os_さんありがとうございます。
burton999さんへ 継承コントロールを正しく貼り付けて、他の処理は正しく動作しているのですが Clearメソッドだけ動作しないのです。 Os_さんへ OverLoadsも試してみましたがダメでした。 |
|
投稿日時: 2004-12-03 22:05
Overridableでないのなら、Protected Shadowsで再宣言して外部から隠し、ClearExなどの代替メソッドを公開します。。。。ってことじゃないの?ここには環境もMSDNもないので、どういうことが起こっているのか、イマイチ、ピンとこないけど。
ShadowsにするとBase側が実行される? Dim txt1 As TextBox = New TextBoxEx Dim txt2 As TextBoxEx = New TextBoxEx txt1.Clear() ' TextBox.Clear()が実行される txt2.Clear() ' TextBoxEx.Clear()が実行される ってこと? んで、overrideは、親クラスにあるメソッドの上にかぶせる宣言で、overloadは同じクラス内で引数の違う同じ名前のメソッドを宣言するものです。似ていますが、用途は違います。しょっちゅう間違えているけど(ぁぅ _________________ |
|
投稿日時: 2004-12-03 22:21
>Clearメソッドだけ動作しないのです。
Public Class TextBoxEX Inherits TextBox Shadows Sub Clear() '何も書いてない End Sub End Class ゆえに動作しないのだったりして。 |
|
投稿日時: 2004-12-03 23:47
Jittaさん OverLoadsの説明ありがとうございます。
Linさんへ Debugモードで、『Shadows Sub Clear()』をブレークポイントに設定 したのですが、ブレークしませんでした。 |
|
投稿日時: 2004-12-04 00:46
ふ〜む。
一度、継承コントロールのコードを提示されてみてはいかがですか? |