.net 方法作为属性
我不确定这里的术语是否正确,所以我的搜索没有结果 我有一个类.net 方法作为属性,.net,vb.net,webforms,.net,Vb.net,Webforms,我不确定这里的术语是否正确,所以我的搜索没有结果 我有一个类MyClass,它具有ToControls功能。此函数返回一些自定义控件 创建MyClass的实例时,我希望传入一个方法,该方法将绑定到ToControls返回的LinkButton事件的OnClick 以下是一个简化版本: Public Class MyClass Private proAction As Action Public Property Action() As Action Get
MyClass
,它具有ToControls
功能。此函数返回一些自定义控件
创建MyClass
的实例时,我希望传入一个方法,该方法将绑定到ToControls
返回的LinkButton
事件的OnClick
以下是一个简化版本:
Public Class MyClass
Private proAction As Action
Public Property Action() As Action
Get
Return proAction
End Get
Set(value As Action)
proAction = value
End Set
End Property
Public Function ToControls() As Object
Dim htmlWrapper As New HtmlGenericControl("div")
Dim lnkTest As New LinkButton
lnkTest.Text = "TEST"
AddHandler lnkTest.Click, AddressOf Action.Method.Name
' ## Error: 'AddressOf' operand must be the name of a method (without parentheses)
htmlWrapper.Controls.Add(lnkTest)
Return htmlWrapper
End Function
End Class
我的代码隐藏看起来像这样:
Protected Sub MySub()
Dim myObj As New MyClass
myObj.Action = AddressOf MyPassedSub
End Sub
Protected Sub MyPassedSub()
Response.Write("Hello World!")
End Sub
我遇到了我认为可以用于此的操作
,但我怀疑我错了
如何实现这一点?
公共属性Ctlevent As EventHandler
应该是您所需要的全部(自动实现的属性)。用于类存储。它实际上不需要是一个属性,但可以只是一个公共成员,或者更好,除非您确实想要获取它并设置它,在构造函数中传递处理程序的地址并将其存储为私有变量。您可能希望ToControl
方法返回Control
thoughHi@puropoix。谢谢你的意见。这可能是我的实现有问题,但我无法做到这一点。我已经将公共属性CtrlEvent添加为EventHandler
到MyClass
中,现在从objN.CtrlEvent=AddressOf NotificationAction
后面的代码设置它。这将生成并运行,但单击LinkButton时不会调用my Sub。我刚收到一封回信。有什么想法吗?当你创建控件时,你是否AddHandler myObj.,CtrlEvent
主要的错误是委托处理。确保事件处理程序(子)签名正确(sender As Object,e As EventArgs
)我基本上是这样做的:。对您来说,这看起来正确吗?它看起来基本正确,除了您的控件工厂只存在于MySub
中,并且在该范围内没有任何地方可以调用ToControl
方法来创建控件。否则这应该行得通