如何为自定义控件创建可绑定事件?

时间:2009-06-04 02:01:30

标签: asp.net events custom-controls

如何在我的自定义asp.net控件上创建一个可以冒泡到其父级的事件?我知道如何添加事件并处理它们但我遇到的问题是如何添加一个事件,例如可以在转发器控件中连接到父节点。

在转发器中是控件,例如连接到自定义控件的onclick事件触发,甚至触发onclick事件中提供的任何地址,就像任何其他控件一样。我也很感激,如果它在VB中,但c#也会这样做。

修改

我正在寻找一个简单的解决方案,并且遇到了这个有效且非常简单的实现方法。有关更详细的示例,请参阅http://msdn.microsoft.com/en-us/library/db0etb8x(VS.85).aspx

Public Event EditClick As EventHandler(Of MyEventArgs)
Public Class MyEventArgs
    Inherits EventArgs
    Public ItemID As Int32
End Class

Protected Sub EditButton_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles EditButton.Click
    Dim A As New MyEventArgs
    A.ItemID = ItemID
    RaiseEvent EditClick(Me, A)
End Sub

然后绑定事件。

<uc1:MyItem OnEditClick="EditItem" ...

后面的代码处理事件

Sub EditItem(ByVal sender As Object, ByVal e As MyItem.MyEventArgs)
        Edit(e.NewsItemID)
End Sub

2 个答案:

答案 0 :(得分:1)

看看我的回答here。这就是你所要求的,

还有一些关于事件使用的信息:

    //declare the event using EventHandler<T>
    public event EventHandler<ImeiRecordParserProblemEventArgs> ImeiRecordParserProblem;

    //fire event: the check for null sees if the delegate is subscribed to
    if (ImeiRecordParserProblem != null)
    {
     ImeiRecordParserProblem(this, new ImeiRecordParserProblemEventArgs(lineNumber + " : " + lex.Message,ProblemType.AmbiguousRecordType));
    }

    //wire up the event in the catching code or otherwise assign in the .aspx
    Irp.ImeiRecordParserProblem += new EventHandler<ImeiRecordParserProblemEventArgs>(Irp_ImeiRecordParserProblem);

//and the EventArgs class:
public class ImeiRecordParserProblemEventArgs : EventArgs
    {}

答案 1 :(得分:0)

我正在寻找一个简单的解决方案,并且遇到了这个有效且非常简单的实现方法。有关更详细的示例,请参阅http://msdn.microsoft.com/en-us/library/db0etb8x(VS.85).aspx

Public Event EditClick As EventHandler(Of MyEventArgs)
Public Class MyEventArgs
    Inherits EventArgs
    Public ItemID As Int32
End Class

Protected Sub EditButton_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles EditButton.Click
    Dim A As New MyEventArgs
    A.ItemID = ItemID
    RaiseEvent EditClick(Me, A)
End Sub

然后绑定事件。

<uc1:MyItem OnEditClick="EditItem" ...

后面的代码处理事件

Sub EditItem(ByVal sender As Object, ByVal e As MyItem.MyEventArgs)
        Edit(e.NewsItemID)
End Sub