ありがちなおはまり
↑読みにくいね
それはともかく。
自作のオブジェクトのデータを編集するコードを書いていました。
ラベル自体とTop/Leftプロパティを入れるスロットを用意してラベルを参照し、ラベルからはTagプロパティでオブジェクトを参照させていました。コントロールを生成するたびに、親コントロールの controls.add を実行して貼り付け、AddHandlerでイベントもしっかり捕まえました。
そこまではよかった。
削除するときに、へましてました。
コントロールが消えないのです。
しばらく悩んで、まず分かったのが、オブジェクトを配列に入れてたのですが、配列長を縮めようとして、全く縮んでいなかったことが判明。なんでやと思ったら、引き算を忘れてた…みてらんない。
まあこれぐらいはいい(よくないけど)。
オブジェクトを配列から排除しても、ラベルが親コントロールに残っていました。よく考えりゃ当然で、親コントロールのcontrolsに残っているのですから。そこで、controls.remove で削除してみました。
それでもダメ。
…なんで?
そこで、オブジェクトが持っているラベルスロットに Nothing を入れて、パージし、そのうえで親コントロールからもパージ。
これでなんとかうまくいきました。
馬鹿は仕事が遅いうえに、こういうアホくさいへまを訂正するだけで喜びに浸れる、ってことね…。はあ。