- PR -

【VB.NET】TextBoxのClearメソッド

投稿者投稿内容
ゆうか
ベテラン
会議室デビュー日: 2004/04/01
投稿数: 62
投稿日時: 2004-12-03 17:35
VB.NETのTextBoxの継承コントロールで、ClearメソッドをOverridesしようとしたのですが、ClearメソッドはOverridableではないのでShadowsするようにとエラーメッセージが出ました。
そこでShadowsにしたのですが、Clearメソッドを実行するとBaseのメソッドしか処理されません。
だれか分かる方、いませんか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-12-03 17:53
Clear()メソッドを呼ぶ際、継承コントロールのインスタンス変数から呼んでいますか?

例えば
Dim text1 as TextBox = new TextBox
'継承コントロール
Dim text2 as TextBoxEx = new TextBoxEx

text1.Clear()
text2.Clear()

でどちらが処理されるか試してみてください。

Os_
ベテラン
会議室デビュー日: 2003/04/16
投稿数: 77
投稿日時: 2004-12-03 19:00
Osです。

Overridableでないメソッドは、Overloads で試してください。
ゆうか
ベテラン
会議室デビュー日: 2004/04/01
投稿数: 62
投稿日時: 2004-12-03 20:37
burton999さん、Os_さんありがとうございます。

burton999さんへ
継承コントロールを正しく貼り付けて、他の処理は正しく動作しているのですが
Clearメソッドだけ動作しないのです。

Os_さんへ
OverLoadsも試してみましたがダメでした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 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は同じクラス内で引数の違う同じ名前のメソッドを宣言するものです。似ていますが、用途は違います。しょっちゅう間違えているけど(ぁぅ
_________________
Lin
ベテラン
会議室デビュー日: 2004/11/08
投稿数: 50
投稿日時: 2004-12-03 22:21
>Clearメソッドだけ動作しないのです。

Public Class TextBoxEX
Inherits TextBox

Shadows Sub Clear()
'何も書いてない
End Sub
End Class

ゆえに動作しないのだったりして。
ゆうか
ベテラン
会議室デビュー日: 2004/04/01
投稿数: 62
投稿日時: 2004-12-03 23:47
Jittaさん OverLoadsの説明ありがとうございます。

Linさんへ
Debugモードで、『Shadows Sub Clear()』をブレークポイントに設定
したのですが、ブレークしませんでした。
Lin
ベテラン
会議室デビュー日: 2004/11/08
投稿数: 50
投稿日時: 2004-12-04 00:46
ふ〜む。
一度、継承コントロールのコードを提示されてみてはいかがですか?

スキルアップ/キャリアアップ(JOB@IT)