We meet again Steven.
"Steven Cheng[MSFT]" <stcheng@online.microsoft.com> wrote in message
news:jlvfhG$6FHA.832@TK2MSFTNGXA02.phx.gbl...
> Hi Terry,
>
> As for ASP.NET Usercontrol(ascx...), the Control instances are all defined
> in the .ascx template file(if not dynamically adding control...), so we
> should not declare "New" for control reference like:
>
> Protected WithEvents txt As New System.Web.UI.WebControls.TextBox
>
> If you get error when not using "New", there must have something incorrect
> in our page or code logic. Would you also provide the ascx template
> together with the code behind?
>
> In addition, for dynamically adding Usercontrol onto aspx page, we should
> use the Page.LoadControl method to load the "xxx.ascx" so as to create the
> UserControl instance and add it into Container control in each Page
> Request....
>
> If there're anything unclear, please feel free to post here.
>
> Regards,
>
> Steven Cheng
> Microsoft Online Support
>
> Get Secure!
www.microsoft.com/security > (This posting is provided "AS IS", with no warranties, and confers no
> rights.)
>
>
> --------------------
> | From: "Terry Holland" <terryeholland@newsgroup.nospam>
> | Subject: Dynamically adding custom control
> | Date: Thu, 17 Nov 2005 21:28:24 -0000
> | Lines: 149
> | X-Priority: 3
> | X-MSMail-Priority: Normal
> | X-Newsreader: Microsoft Outlook Express 6.00.2900.2527
> | X-RFC2646: Format=Flowed; Original
> | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2527
> | Message-ID: <#l8Ze376FHA.1188@TK2MSFTNGP12.phx.gbl>
> | Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
> | NNTP-Posting-Host: host10.harsco.com 209.183.189.10
> | Path: TK2MSFTNGXA02.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP12.phx.gbl
> | Xref: TK2MSFTNGXA02.phx.gbl
> microsoft.public.dotnet.framework.aspnet.buildingcontrols:13997
> | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
> |
> | Im trying to dynamically add a user control for a webform but it is not
> | appearing when I run the form.
> |
> | I have pasted the code that I am using. Can someone advise what Im
> doing
> | wrong. My user control (ctlTextBox) contains one textbox. When I
> dragged
> | this onto the control, the line
> |
> | Protected WithEvents txt As System.Web.UI.WebControls.TextBox
> |
> | was added the declarations area of the code module. Without changing
> this
> | to
> |
> | Protected WithEvents txt As New System.Web.UI.WebControls.TextBox
> |
> | An error is generated on my page as soon as I hit the line
> |
> | .Text = "Tesing Control"
> |
> | Also, if I drag ctlTextBox onto my form at design time, it displays OK
> |
> |
> | ==========================
> | User Control Code
> | ==========================
> | Public Class ctlTextBox
> | Inherits System.Web.UI.UserControl
> |
> | #Region " Web Form Designer Generated Code "
> |
> | 'This call is required by the Web Form Designer.
> | <System.Diagnostics.DebuggerStepThrough()> Private Sub
> | InitializeComponent()
> |
> | End Sub
> |
> | '############################################################
> | '## This is the code that was generated
> | ############
> | '## but without the New keyword, a runtime error is generated
> | ############
> | '## when I try to set the Text property on the page
> | ############
> | '############################################################
> | 'Protected WithEvents txt As System.Web.UI.WebControls.TextBox
> | Protected WithEvents txt As New System.Web.UI.WebControls.TextBox
> |
> | 'NOTE: The following placeholder declaration is required by the Web
> Form
> | Designer.
> | 'Do not delete or move it.
> | Private designerPlaceholderDeclaration As System.Object
> |
> | Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> | System.EventArgs) Handles MyBase.Init
> | 'CODEGEN: This method call is required by the Web Form Designer
> | 'Do not modify it using the code editor.
> | InitializeComponent()
> | End Sub
> |
> | #End Region
> |
> | Public Property Width() As Integer
> | Get
> | Return txt.Width.Value
> | End Get
> | Set(ByVal Value As Integer)
> | txt.Width = Unit.Pixel(Value)
> | End Set
> | End Property
> |
> | Public Property Text() As String
> | Get
> | Return txt.Text
> | End Get
> | Set(ByVal Value As String)
> | txt.Text = Value
> | End Set
> | End Property
> |
> | Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> | System.EventArgs) Handles MyBase.Load
> | 'Put user code to initialize the page here
> | txt.CssClass = "Editable"
> | End Sub
> |
> | End Class
> | ===========================
> | End User Control Code
> | ===========================
> |
> |
> | ===========================
> | Page Code
> | ===========================
> | Public Class pgeTest
> | Inherits System.Web.UI.Page
> |
> | #Region " Web Form Designer Generated Code "
> |
> | 'This call is required by the Web Form Designer.
> | <System.Diagnostics.DebuggerStepThrough()> Private Sub
> | InitializeComponent()
> |
> | End Sub
> |
> | Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
> |
> | 'NOTE: The following placeholder declaration is required by the Web
> Form
> | Designer.
> | 'Do not delete or move it.
> | Private designerPlaceholderDeclaration As System.Object
> |
> | Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
> | System.EventArgs) Handles MyBase.Init
> | 'CODEGEN: This method call is required by the Web Form Designer
> | 'Do not modify it using the code editor.
> | InitializeComponent()
> | End Sub
> |
> | #End Region
> |
> | Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> | System.EventArgs) Handles MyBase.Load
> | BuildControls()
> | End Sub
> |
> |
> | Sub BuildControls()
> | Dim tb As New ctlTextBox
> | With tb
> | .Text = "Tesing Control"
> | End With
> | Panel1.Controls.Add(tb)
> |
> | Dim txt As New TextBox
> | txt.Text = "Hello"
> | Panel1.Controls.Add(txt)
> |
> | Dim lbl As New Label
> | lbl.Text = "Label"
> | Panel1.Controls.Add(lbl)
> |
> | End Sub
> |
> | End Class
> | ===============================
> | End of Page Code
> | ===============================
> |
> |
> |
>