- PR -

ユーザーコントロールの作り方

投稿者投稿内容
ポポロン
常連さん
会議室デビュー日: 2003/05/30
投稿数: 26
投稿日時: 2004-06-09 13:33
OnTextChangedメソッドについては解りました。
C++みたいにメッセージハンドラとして存在していたのですね。
さて、OnTextChangedメソッドを使ってイベントは取得できたのですが、
肝心なのは、OnTextChangedメソッド時にTextの情報が取得できないのです。
<System.ComponentModel.Description("コントロール内のテキストです。")> _
Shadows Property Text() As String
  Get
    Return TextBox.Text
  End Get
  Set(ByVal Value As String)
    TextBox.Text = Value
  End Set
End Property
こんな感じでTextプロパティを拡張してみたのですが、実際に取得できるのは、
実行前のText情報です。
どうやったら、取得したり、戻したりできるのでしょうか?
よろしくお願いします。
ポポロン
常連さん
会議室デビュー日: 2003/05/30
投稿数: 26
投稿日時: 2004-06-09 13:54
すいません。できました。
プロパティ設定など必要なかったのですね。
MyBaseを使って呼び出し元(基本クラス)の情報を取得するのですね。
MyBaseの意味がなんとなく解りました。
ヘルプを見てMyBaseの意味をもっと理解していきたいと思います。
みなさま、ありがとうございました。


[ メッセージ編集済み 編集者: ポポロン 編集日時 2004-06-09 13:55 ]
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-06-09 14:02
Hasumiです。

>OnTextChangedメソッド時にTextの情報が取得できないのです。
Me.Textで取得できます。

MSDNに使用例が出ています。
みゅう
常連さん
会議室デビュー日: 2004/04/14
投稿数: 49
お住まい・勤務地: 都内某所
投稿日時: 2004-06-09 14:04
引用:

で、そのOnTextChangedメソッドは具体的に、どのように記述したらいいのでしょうか?


みゅうです。
えっと、ユーザコントロール側(多分DLLにしてるんですよね?)のコードエディタの上部に
二つのコンボボックスがありますよね?
最初に左のコンボの中から(Overrides)を選択します。次に右のコンボの中からOnTextChangedを選択して下さい。そうすると、自動的に記述欄(Protected 〜 EndSub)が生成されます。
そこに、Hasumiさんがおっしゃった様に記述してみてください。
※MyBase.OnTextChanged(e) は必ず書いてくださいね。
これをビルドして出来たDLLを参照しているプロジェクト(親フォーム等)に参照し替えればTextChangedイベントが動作する拡張テキストボックスになりますよ。

あら、もう解決してたんですね^^;すみません


[ メッセージ編集済み 編集者: みゅう 編集日時 2004-06-09 14:05 ]
ポポロン
常連さん
会議室デビュー日: 2003/05/30
投稿数: 26
投稿日時: 2004-06-09 15:07
みゅうさん、返信ありがとうございます。
最初に左のコンボの中から(Overrides)を選択します。・・・・・
この機能、便利ですね。C++のクラスウィザードみたいですね^^
※MyBase.OnTextChanged(e)…この一文、重要ですね。
これが無いと基本クラス側からのイベントが使えませんからね…

Hasumiさん、わざわざ、参考サイトを教えていただきありがとうございます。
なるほど、[Me]は自分…つまり、ユーザーコントロールを指していたのですね。てっきり、VBではフォームを表すものだと勘違いしていました。^^;

ふむ…基本クラス(Me = MyBase = 親)という訳ですね。この辺り、理解出来ていない人はかなりいると思います。

本当にありがとうございました。おかげで拡張TextBoxが出来そうです。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-06-09 15:57
Hasumiです。

えーと、MSDNでは
Me:コードが実行されているクラスまたは構造体の特定のインスタンスを参照できます。
MyBase:クラスの現在のインスタンスの基本クラスを参照するオブジェクト変数と同じように動作するキーワードです。
となっていますので、
引用:
ふむ…基本クラス(Me = MyBase = 親)という訳ですね。


ではありません。

詳細はこちら(Me)こちら(MyBase)を参考にしてください。
ポポロン
常連さん
会議室デビュー日: 2003/05/30
投稿数: 26
投稿日時: 2004-06-09 16:32
Hasumiさん、どうもです。
なんとなく解ってきましたが、まだモヤがかかってます。
ですが、何回も読んで理解しようと思います。
わざわざ、ありがとうございます。

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