1

プロジェクトにユーザー コントロールがあり、ボタンをクリックしてこのユーザー コントロールをフォームに追加したいのですが、ユーザー コントロールが既にフォームにある場合は、それを表示したいと考えています。

これは私がこれまでに書いたコードです:

Using GstAbonnement As New GestionAbonnement
            GstAbonnement.Dock = DockStyle.Fill
            Me.Controls.Add(GstAbonnement)
End Using

ユーザーコントロールが既にフォームにあるかどうかをテストするにはどうすればよいですか?

4

3 に答える 3

1

Using...End Using現在のコードでは、構文がコントロールを破棄するため、そのコントロールはフォーム内に見つかりません。

これを次のように変更してみてください。

Dim GstAbonnement As New GestionAbonnement
GstAbonnement.Name = "gestionAbonnement1"
GstAbonnement.Dock = DockStyle.Fill
Me.Controls.Add(GstAbonnement)

コントロールの名前を指定したことに注意してください。

これで、コントロールがコレクション内にあるかどうかをキーで簡単に確認できます。

If Me.Controls.ContainsKey("gestionAbonnement1") Then
  Me.Controls("gestionAbonnement1").Visible = True
  Me.Controls("gestionAbonnement1").BringToFront()
  MessageBox.Show("Found!")
End If
于 2012-11-08T19:38:55.347 に答える
1

Form.Controls.Findを使用して、フォーム上の特定のコントロールを検索できます。コントロールを含む可能性があるサブコントロール (パネル、グループボックスなど) の検索を有効にするプロパティも受け入れます。

于 2012-11-08T00:22:26.757 に答える
1

Su Sha が言ったように Form.Controls.Find を使用できます。または Form.Controls をループして、特定の名前のコントロールを見つけることができます。

Form.Controls.Find 関数の方が安全で簡単です。

于 2012-11-08T19:29:33.197 に答える