フォーム (Form1) があり、30 個のコントロールがあります。ボタンを押すと、それらの 30 個のボタンを削除し、フォームに他のコントロールを配置したいと考えています。さて、私の問題は、これが遅くなることです。
削除したいコントロールを含むこのリストがあり、For Each でそれらを実行します。
Private Sub ClearControls()
'removing the controls from Me.Controls
For Each Control As Control In ListToDelete
Me.Controls.Remove(Control)
Next
ListToDelete = New List(Of Control)
End Sub
ここで、フォームを観察すると、コントロールが 1 つずつ削除されていることがわかります。このアクションには約 0.4 秒かかり (組み込みのストップウォッチで計測)、長すぎます。
コントロールをより速く削除する解決策はありますか、それともコントロールを 1 つずつ削除することしかできませんか?
おそらく重要な事実は、すべてがデータベースに接続されているということです。コントロールは、私が自分で定義したクラス (TableDrawer) によって作成され、長方形または円を作成します (データベースからの情報によって異なります)。自作のコントロールをフォームに追加し、それらを削除したい場合、フォーム上の他のコントロールを取得するのに0.4秒かかります-データベースからの情報も含まれます。
うまくいけば、これでいくつかの問題が解決し、あなたが私を助けてくれることを願っています...本当にもう少し速くなる必要があります(0.1秒以下になることを願っています)