T
Terry Holland
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
===============================
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
===============================