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

解決


RYU  2003-12-22 07:10:11  No: 110874

環境: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 18:08:27  No: 110875

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

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

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

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

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


RYU  2003-12-23 23:48:34  No: 110876

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加