2016-12-05 18 views
0

私は、プロジェクト内のフォームにいくつかのコントロールをプログラムで追加しています。タイマーがきたら、既存のコントロールをすべて削除し、新しいコントロールと新しいこれは恐ろしいコードですか?)フォームからすべてのコントロールを削除する

私はmsdnを見て、私が欲しいことをするように聞こえるcontrolcollection.clear()メソッドを見つけました。しかし、私はメソッドを使用しようとするたびに、 "非共有メンバーへの参照はオブジェクト参照が必要です"というエラーをあやふやにします。

どうしてですか?私は初心者であり、非共有メンバーが何であるか(またはそれらが何であるか)、またはオブジェクト参照を与える方法がわかりません。

この私が使用していたコードではありませんが、私はそれが最も簡単にポイントを示していると思う:

Private Sub add_and_remove() 
    For i = 0 To 10 
     Dim t As New TextBox 
     t.Text = "whatever" 
     Me.Controls.Add(t) 
    Next 
    Me.ControlCollection.Clear() 
End Sub 

感謝を事前に!コメントから

+0

'ControlCollection'は型です。 'Controls'は、' ControlCollection'型のインスタンスです。実行時にコントロールを作成することは、アプリケーションの漏洩を防ぐために、それらを廃棄する責任があることに注意してください。 – Plutonix

+0

ああ、それは簡単な笑だった!ありがとう。それを答えとして加えてください(controlcollectionではなくcontrolsを使用してください)。私はそれを受け入れますか? – grumpasaurus

+0

"既存のコントロールをすべて削除し、新しいコントロールと新しい更新データ(これは恐ろしいコーディングですか?)" - ほぼ確実です。コントロールをそのままの状態にして、必要に応じてコントロールのプロパティを更新します。 –

答えて

2

:使用

Me.Controls.Clear()Me.ControlCollection.Clear()

またはより良いとは反対に、まだ、すべてのコントロールをクリアして、ちょうどコントロールのプロパティを更新しません。

ありがとうございます!

関連する問題