Instead of updating the ID in the control load event, update it when the property changes:
Private intID As Integer
Public Property ID() As Integer
Get
Return intID
End Get
Set(value As Integer)
intID = value
UpdateUserControlFields() ' This Method uses ID within
End Set
End Property
The UserControl_Load event "Occurs before the control becomes visible for the first time."