環境: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
すると、ボタンを押すとフォーム上のテキストボックスは変化するのですが、変わってるはずのユーザーコントロール上のラベルのテキスト表示が
変わりません。
何故でしょうか?よろしくお願いします。
そりゃ New しちゃってるからだろうね。
New の意味は意外と重要だから充分に調べておいた方が良いですよ。
上のコードで UC に New された UserControl1 と Form 上に
張り付けてあるであろう UserControl1 は全くの別物です。
Me(←Form1 を指す).UserControl1 として指定できる Form1
の下(子)として存在する UserControl1 の Label1 を変更しないと
意味がありません。
…しかし、通常ユーザーコントロール上の部品はグローバルには認識
されてないと思いますので、独自の Public Property を作成して
プロパティに値が入力された時に Label1.Text を変更するように
するのが良いでしょう。ヘルプに
『チュートリアル : Visual Basic .NET によるユーザー コントロールの作成』
という項目があると思いますので検索してみて下さい。
特攻隊長まるるう様、大変ありがとうございます。
最近ようやくクラスという物が分かってきたような感じですので
さらに精進して参ります。
また何かありましたら質問させていただきます、的はずれなときも
あるかと思いますがよろしくお願いします。
ツイート | ![]() |