ユーザーコントロール上のラベルのテキストが変わりません。

解決


RYU  2003-12-21 22:10:11  No: 110874  IP: [192.*.*.*]

環境:VB.NET2002スタンダード

こんばんは。
ラベル1を貼り付けたユーザーコントロール1を作成し、
これとテキストボックス1・ボタン1をフォーム1に貼り付け、
以下のようにコードを書きました。

Public Class Form1
    Inherits System.Windows.Forms.Form

" Windows フォーム デザイナで生成されたコード "

Dim UC As New UserControl1()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  UC.Label1.Text += "a"
  TextBox1.Text = UC.Label1.Text
End Sub

End Class

すると、ボタンを押すとフォーム上のテキストボックスは変化するのですが、変わってるはずのユーザーコントロール上のラベルのテキスト表示が
変わりません。
何故でしょうか?よろしくお願いします。

編集 削除
特攻隊長まるるう  2003-12-22 09:08:27  No: 110875  IP: [192.*.*.*]

そりゃ New しちゃってるからだろうね。
New の意味は意外と重要だから充分に調べておいた方が良いですよ。

上のコードで UC に New された UserControl1 と Form 上に
張り付けてあるであろう UserControl1 は全くの別物です。
Me(←Form1 を指す).UserControl1 として指定できる Form1
の下(子)として存在する UserControl1 の Label1 を変更しないと
意味がありません。

…しかし、通常ユーザーコントロール上の部品はグローバルには認識
されてないと思いますので、独自の Public Property を作成して
プロパティに値が入力された時に Label1.Text を変更するように
するのが良いでしょう。ヘルプに

『チュートリアル : Visual Basic .NET によるユーザー コントロールの作成』

という項目があると思いますので検索してみて下さい。

編集 削除
RYU  2003-12-23 14:48:34  No: 110876  IP: [192.*.*.*]

特攻隊長まるるう様、大変ありがとうございます。
最近ようやくクラスという物が分かってきたような感じですので
さらに精進して参ります。
また何かありましたら質問させていただきます、的はずれなときも
あるかと思いますがよろしくお願いします。

編集 削除