ここの例では、上記の画像のようにテキストボックスを動的に1個追加します。
・左側テキストボックス:静的(最初から作成しておく)
・右側テキストボックス:動的(Initializeイベント内で作成する)
このようにして、右側のテキストボックスを動的に作り出します。
その後
Enterの疑似イベント:テキストボックスの背景を黄色
Exitの疑似イベント:テキストボックスの背景を青色
として、試しています。
ではなぜ上記の画像では、「Enter」と「Exit」イベントが拾えているのでしょうか?
しかもクラスモジュールは使っていません。後述するコードを見てもらえれば分かると思いますが、
上記の処理だけであれば、動的なテキストボックスの追加部分を含めてもほんの10行程度です。
これができる理由とは、、、
実はとても簡単な仕組みです。
フレーム(Frame)を使っています。
既に気づいた方もいらっしゃるかもしれませんが、実は動的に追加したテキストボックスはフレーム内に配置されています。
すなわちこのフレームのEnterイベントとExitイベントを動的テキストボックスのそれらに割り当てるような動きをしているから実現できています。これが「疑似的」である所以です。
もっとも、この方法は「動的であることのメリットが消失」するため違和感があります。ただ一方で、実装としてはシンプルなことも見逃せないです。好みの問題かもしれないですが、やはり、そもそもとしてテキストボックス(そしてその他のコントロールも)に、「Enter」と「Exit」を仕様としてあってほしいです。
ちなみにこのコードのコントロール追加はフォームの「Initializeイベント」で追加しています。
「Activateイベント」では、コントロールが追加される「瞬間」くらいにフレームのEnterイベントが発生します。
恐らくこの時点では、テキストボックスはまだ「未完成状態」と思われ、Enterイベント内でエラーが発生します。
それを回避するためにInitializeで確実に追加した後という形にしています。