I have created controls dynamically to display on the page. I have placed my control first, then the way I call and dislay the control on the page, and third how I attempted to read the value. If I drag and drop the control on the page, and set the id property to txtAnswer I can do the following and it works: myVar = txtAnswer.text. Any ideas would be great.<BR><BR>Chris<BR><BR>/*Control*/<BR>&#060;DefaultProperty("Text"), DefaultEvent("TextChanged"), _<BR> ToolboxData("&#060;{0}:Answers runat=server&#062;&#060;/{0}:Answers&#062;")&#062; _<BR> Public Class Answers<BR> Inherits WebControl<BR> Implements INamingContainer<BR><BR> Public Event TextChanged(ByVal sender As Object, ByVal args As EventArgs)<BR><BR> Public Property Text() As String<BR> &#039; Gets/sets value of textbox<BR> Get<BR> &#039; Make sure child controls have been created<BR> Me.EnsureChildControls()<BR> Return CType(Controls(0), TextBox).Text<BR> End Get<BR> Set(ByVal Value As String)<BR> &#039; Make sure child controls have been created<BR> Me.EnsureChildControls()<BR> CType(Controls(0), TextBox).Text = Value<BR> End Set<BR> End Property<BR><BR> Public Property CheckBlank() As Boolean<BR> &#039; Gets/sets whether RequiredFieldValidator is enabled.<BR> &#039; If so, control checks for blank entry.<BR> &#039; Default = True.<BR> Get<BR> &#039; Make sure child controls have been created<BR> Me.EnsureChildControls()<BR> Return CType(Controls(1), RequiredFieldValidator).Enabled<BR> End Get<BR> Set(ByVal Value As Boolean)<BR> &#039; Make sure child controls have been created<BR> Me.EnsureChildControls()<BR> CType(Controls(1), RequiredFieldValidator).Enabled = Value<BR> End Set<BR> End Property<BR> <BR><BR> Protected Sub txtAnswers_TextChanged(ByVal src As Object, ByVal args As EventArgs)<BR> RaiseEvent TextChanged(Me, EventArgs.Empty)<BR> End Sub<BR><BR> Protected Overrides Sub CreateChildControls()<BR> &#039; Answer Control<BR> Dim txtAnswers = New TextBox<BR> txtAnswers.ID = "__txtAnswers"<BR> txtAnswers.columns = "45"<BR><BR> AddHandler CType(txtAnswers, TextBox).TextChanged, AddressOf txtAnswers_TextChanged<BR><BR><BR> &#039;RequiredFieldValidator. By default, enabled.<BR> Dim rfvAnswer = New RequiredFieldValidator<BR> rfvAnswer.ID = "__rfvAnswer"<BR> rfvAnswer.ControlToValidate = txtAnswers.UniqueID<BR> rfvAnswer.Display = ValidatorDisplay.Dynamic<BR> rfvAnswer.ErrorMessage = "Required."<BR><BR> Me.Controls.Add(txtAnswers)<BR> Me.Controls.Add(rfvAnswer)<BR><BR> End Sub<BR> End Class<BR><BR><BR>/*How I generate the text boxes*/<BR><BR><BR>Sub CreateAnswerBoxes(ByVal strType As String)<BR> Dim x As Integer<BR><BR> For x = 1 To dropNumberOfAnswers.SelectedValue<BR> Dim txtAnswers As New Controls.Survey_Controls.Answers<BR> txtAnswers.ID = "Answer" & x<BR><BR> plhAnswers.Controls.Add(New LiteralControl(strType & " " & x & ": "))<BR> plhAnswers.Controls.Add(txtAnswers)<BR><BR> plhAnswers.Controls.Add(New LiteralControl("<BR>"))<BR><BR><BR> Next<BR> End Sub<BR><BR><BR>/*Thoughts on how to get the value<BR>Function SaveAnswers(ByVal AnswerParentID As String) As Boolean<BR> Dim NumberOfAnswers As Integer<BR> Dim fOk As Boolean<BR> Dim strErrorMessage As String<BR> Dim AnswerID, AnswerContentID As String<BR> NumberOfAnswers = dropNumberOfAnswers.SelectedValue<BR><BR> Dim x As Integer<BR><BR><BR> For x = 1 To NumberOfAnswers<BR> AnswerID = "Answer" & x<BR> Dim arAttributeAndValue() As AttributesAndValues = { _<BR> New AttributesAndValues("Answer_Order", x), _<BR> New AttributesAndValues("Answer_Text", Request.Form(AnswerID))}<BR> Response.Write("Answer = " & Request.Form(AnswerID) & "<BR>")<BR><BR> Dim objSave As New Save<BR> fOk = objSave.Save("Answer", AnswerParentID, arAttributeAndValue, AnswerContentID, strErrorMessage)<BR> If Not fOk Then<BR> Exit For<BR> End If<BR><BR> Next<BR> Return fOk<BR> End Function