Это звучит как случай для " всплывающего события ".
Пузырьки событий позволяют составляющему элементу управления некоторого контейнера иметь события, которые «всплывают» или возбуждаются для обработки родительским (контейнерным) элементом управления.
Элемент управления кнопки в веб-части A может содержать следующий код в событии щелчка:
RaiseBubbleEvent(Me, args)
где args - это некоторый пользовательский тип, производный от System.EventArgs. Затем это вызовет (или «всплывет») событие (с вашими пользовательскими аргументами) в родительском контейнере (в вашем случае сам UserControl). Это обрабатывается в следующем событии в родительском контейнере:
Protected Overrides Function OnBubbleEvent(ByVal source As Object, ByVal args As System.EventArgs) As Boolean
Это можно повторить в иерархии содержания на вашей веб-странице (при этом страница является конечным контейнером). Как только это событие достигнет контейнера, который является родительским для обоих ваших пользовательских контролей (A & B), вы можете затем вызывать открытые методы для UserControl B из кода для родительского контейнера, передавая пользовательские события, если хотите.