Imports System.Web
Imports System.Web.UI
Imports Microsoft.VisualBasic
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Drawing.Design.UITypeEditorNamespace zJYLControl
    Public NotInheritable Class SY
        Inherits WebControl
        Implements INamingContainer
        Dim MyButton As New Button
        Public Event PageIndexChangedForBottom(ByRef sender As Button, ByRef e As MySelfUserControl)        Protected Overrides Sub CreateChildControls()
            MyButton.Text = "试验一下"
            MyButton.Width = Unit.Pixel(144)
            MyButton.Height = Unit.Pixel(24)
            Me.Controls.Add(MyButton)
            AddHandler MyButton.Click, AddressOf Me.IndexChangedForBottom
        End Sub        Public Sub IndexChangedForBottom(ByVal sender As [Object], ByVal e As EventArgs)
            RaiseEvent PageIndexChangedForBottom(MyButton, e)
        End Sub
    End Class    Public Class MySelfUserControl
        Inherits System.EventArgs
    End Class
End Namespace问题出在哪里?在程序调用该控件点击按钮,显示转换失败....

解决方案 »

  1.   

    Imports System.ComponentModel
    Imports System.Web.UI
    Imports System.Web.UI.WebControls<DefaultProperty("Text"), ToolboxData("<{0}:test runat=server></{0}:test>")> Public Class test
        Inherits System.Web.UI.WebControls.WebControl
        Implements INamingContainer
        Private WithEvents MyButton As Button    Public Event PageIndexChangedForBottom As EventHandler    <NotifyParentProperty(True), PersistenceMode(PersistenceMode.InnerProperty), _
            Category("ChildControl"), Description("Button")> _
            Public ReadOnly Property SubButton() As Button
            Get
                Me.EnsureChildControls()
                Return MyButton
            End Get
        End Property    Protected Overrides Sub AddParsedSubObject(ByVal obj As Object)
            If TypeOf (obj) Is Button Then
                Me.MyButton = obj
            End If
        End Sub    Protected Overrides Sub CreateChildControls()
            If MyButton Is Nothing Then
                MyButton = New Button
                MyButton.Text = "试验一下"
                MyButton.Width = Unit.Pixel(144)
                MyButton.Height = Unit.Pixel(24)
            End If
            MyBase.Controls.Add(MyButton)
        End Sub    Private Sub MyButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyButton.Click
            RaiseEvent PageIndexChangedForBottom(sender, e)
        End Sub
    End Class
      

  2.   

    事件也可以这样写
        Private Sub MyButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyButton.Click
            RaiseBubbleEvent(sender, e)
        End Sub
      

  3.   

    多谢,不过AddParsedSubObject是做什么的啊?