Объявление поля как WithEvents
приведет к тому, что компилятор автоматически сгенерирует свойство с этим именем. Получатель возвращает значение вспомогательного поля. Сеттер немного сложнее. Сначала проверяется, имеет ли поле поддержки правильное значение. Если так, это выходит. В противном случае, если поле поддержки не является нулевым, оно выдает запросы «RemoveHandler» обо всех своих событиях объекту, идентифицированному в поле поддержки. Далее, независимо от того, было ли вспомогательное поле ненулевым, оно устанавливает его равным запрошенному значению. Наконец, если новое значение не равно нулю, независимо от того, было ли старое или нет, свойство выдает запросы AddHandler для всех своих событий для объекта, идентифицируемого новым значением.
При условии, что для всех членов WithEvents объекта установлено значение Nothing
перед тем, как отказаться от него, и избегать манипулирования членами WithEvents в нескольких потоках, автоматически сгенерированный код события не будет просачиваться.