ありがちなおはまり

↑読みにくいね

それはともかく。

自作のオブジェクトのデータを編集するコードを書いていました。
ラベル自体とTop/Leftプロパティを入れるスロットを用意してラベルを参照し、ラベルからはTagプロパティでオブジェクトを参照させていました。コントロールを生成するたびに、親コントロールの controls.add を実行して貼り付け、AddHandlerでイベントもしっかり捕まえました。

そこまではよかった。

削除するときに、へましてました。

コントロールが消えないのです。
しばらく悩んで、まず分かったのが、オブジェクトを配列に入れてたのですが、配列長を縮めようとして、全く縮んでいなかったことが判明。なんでやと思ったら、引き算を忘れてた…みてらんない。

まあこれぐらいはいい(よくないけど)。

オブジェクトを配列から排除しても、ラベルが親コントロールに残っていました。よく考えりゃ当然で、親コントロールのcontrolsに残っているのですから。そこで、controls.remove で削除してみました。

それでもダメ。
…なんで?

そこで、オブジェクトが持っているラベルスロットに Nothing を入れて、パージし、そのうえで親コントロールからもパージ。
これでなんとかうまくいきました。

馬鹿は仕事が遅いうえに、こういうアホくさいへまを訂正するだけで喜びに浸れる、ってことね…。はあ。