Accessing user controls from the code-behind

Accessing user controls from the code-behind

When you add a user control to an ASP.NET page, Visual Studio .NET does not add a control declaration as it does when you add standard ASP.NET web controls. The result is that you can’t directly access the user control from the code-behind and programmatically change its properties and call its methods. Well, you can, but you first have to declare the user control variable by hand, and then set it to the user control instance created on the page. Here’s the code:

' declare the controlProtected MyCtl As MyUserControl Private Sub Page_Init(sender As Object, e As EventArgs) Handles MyBase.Init    InitializeComponent()    ' get a reference to the MyUserControl user control.    MyCtl = DirectCast(FindControl("MyCtl"), MyUserControl)End Sub 

From now on you can access the control and do something like:

MyCtl.BackColor = Color.YellowMyCtl.DoSomething()

If you program with C#, you still need to manually declare the control variable, but you don’t need to explicitly set it to the control instance declared on the ASPX page. This is done automatically by the ASP.NET runtime, provided that the name of the control variable matches the name used for the control instance on the page.


Share the Post: