Прежде всего, вам нужно убедиться, что у вас есть событие, определенное в коде вашего usercontrol.
например:
public class MyUserControl
Inherits UserControl
Public Event Bind(sender as object, e as EventArgs)
public sub SomeFunction()
RaiseEvent Bind(me, new EventArgS())
End Sub
End Class
После этого вы можете привязаться к событию. Теперь, для вашей другой проблемы, вы загружаете этот элемент управления динамически или он объявлен на вашей стороне ASPX? Если он на стороне ASPX, то вам не нужен LoadControl, поскольку объявление объекта как Runat = Server на стороне ASPX создает экземпляр указанного класса.
Если нет, то вам нужно убедиться, что вы используете виртуальный путь для расположения файла ASCX. (в вашем примере вы бы использовали "~ / indDemographics.ascx" , если ASCX был в корне сайта). На этом этапе вам нужно добавить его на страницу (или заполнитель или какой-либо другой контейнерный объект).
Независимо от того, каким образом вы создаете экземпляр UserControl, вы затем связываете обработчик события с событием экземпляра класса. Например:
Dim btn As New Button;
AddHandler btn.Click, AddressOf MyButtonClickEventHandler
Теперь по той причине, что вы получаете пустую ссылку в примере кода.
Когда вы используете ссылку LoadControl, экземпляр вашего объекта находится в переменной UC . В этом примере вы объявляете два объекта, UC как тип UserControl и indDemographics как тип indDemographics.
Когда вы используете LoadControl, вы создаете экземпляр экземпляра indDemographics и присваиваете его UC. Когда вы пытаетесь присвоить обработчик события переменной IndDemographics, он фактически никогда не создавался.
В конечном итоге ваш код должен выглядеть примерно так:
protected indDemographics IndDemographics;
override protected void OnInit(EventArgs e)
{
indDemographics = LoadControl("~/indDemographics.ascx");
IndDemographics.Bind += new EventHandler(test_handler);
base.OnInit(e);
}