Во-первых, у вас есть несколько сложных проблем, и я сначала подумал, что вы должны разделить их и атаковать каждую из них до тех пор, пока она не заработает, а затем добавить их в окончательное решение. Например, не пытайтесь начать с динамического создания вашего пользовательского элемента управления и заставить его выставлять и запускать событие. Динамическая часть этой проблемы может помешать вашим событиям не работать, но вы никогда не узнаете, в чем проблема. Вместо этого я рекомендую вам сосредоточиться на событиях в VB.NET и заставить их работать из статически созданного пользовательского элемента управления. Затем, когда все это заработает, перейдите к созданию динамически создаваемого пользовательского элемента управления.
Что касается понимания событий в VB.NET, я настоятельно рекомендую примеры MSDN. Начните с этого простого примера: Как: вызвать событие (Visual Basic) , а затем выполнить другие примеры, связанные с этой страницей. Затем, когда вы научитесь создавать свои собственные события в VB.NET, посмотрите, как динамически добавлять пользовательский контроль.
Пузырьки событий - это когда родительский элемент управления обрабатывает событие от дочернего элемента. Так что да, это то, что вы пытаетесь сделать.