Как создать привязываемое событие для моего пользовательского элемента управления? - PullRequest
0 голосов
/ 04 июня 2009

Как мне создать событие на моем пользовательском элементе управления asp.net, которое может всплыть перед его родителем? Я знаю, как добавлять события и обрабатывать их, но я немного застрял в том, как добавить событие, которое можно связать с родителем, например, в элементе управления повторителем.

В повторителе находится элемент управления, событие onclick, например, подключенное к пользовательскому элементу управления, запускается и даже запускается по любому адресу, указанному в событии onclick, как любой другой элемент управления. Я также был бы признателен, если бы он был на VB, но c # тоже подойдет.

EDIT

Я искал простое решение и наткнулся на это, которое работает и очень просто в реализации. См. 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 ]

1 голос
/ 04 июня 2009

Посмотрите на мой ответ здесь . Это делает то, что вы просите,

Также немного информации об использовании события:

    //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
    {}
0 голосов
/ 10 декабря 2009

Я искал простое решение и наткнулся на это, которое работает и очень просто в реализации. См. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...