比較的単純な問題です。VB.Netのメモリからコントロールを正しく削除するには?
パネルにはテキストボックスがあり、すべて動的に作成されています。 ユーザーがテキストボックスの一部を入力してから、パネルを閉じます。
コードでは、私は行を使用します。
Me.Pnl_Main.Controls.Clear()
これは問題なく機能し、パネルの内容は「削除」されます。
問題は、テキストボックスが同じ目的のために再作成されても、以前にあった値がまだ残っているということです。
残念ながら、私にとってはほとんどのUIはこのように作成され、必然的にメモリリークが発生します。
私の質問は、メモリから完全にコントロールを削除する適切な方法はありますか?または、すべてのテキスト値をNothingに設定するルーチンを実行する必要がありますか?
ありがとうございます。
あなたが作成したテキストボックスへの参照は、 '.Clear()'を実行した後もどこかに存在するというのが問題だと思います。テキストボックスの同じインスタンス(以前のテキストが表示されている理由)を常に使用しているため、メモリリークの問題はないと思います。もちろん、テキストボックスはフォーム外で参照されますが、リークは可能です。テキストボックスを作成してパネルに追加するコードを表示できます – Fabio
'Me.Pnl_Main.Controls.Clear()'の後に、textbox変数をnothingに設定できます。 –
テキストボックスは実際に私が作ったユーザーコントロールの一部です(このようにして、大量のコントロールを動的に作成するときの時間を節約できます)。 –