2009-08-19 5 views
0

이벤트를 추가 한 맞춤 datagridviewcolumn이 있습니다. 문제는 현재 열 개체의 이벤트에 누가 가입했는지 확인하고 복제 된 열 개체에 구독을 추가하는 방법을 알아낼 수 없다는 것입니다.개체의 이벤트 구독을 복제하는 방법은 무엇입니까?

이벤트에 처리기를 추가하는 대신 호출 프로그램이 처리기의 주소를 사용자 지정 열의 대리자에게 전달하도록 요청함으로써이 문제를 해결할 수 있습니다.

내 용어를 용서하면, 내가 무슨 말을 하려는지 이해할 수 있기를 바랍니다.

메소드에 대한 참조를 수신하면 datagridviewcolumn이 이제 제어 기능을 갖기 때문에 해당 참조를 쉽게 복제 할 수 있습니다.

이것은 괜찮지 만 컨트롤 사용자는 Visual Studio에서 이벤트를 선택하여 이벤트를 승인 할 수 있기를 기대합니다.이 이벤트는 메서드의 템플릿을 만듭니다.

답변

1

적어도 C#에서는 속성에 대한 getter 및 setter와 같은 이벤트에 대해 "adders"및 "removers"를 가질 수 있습니다.

누군가 이벤트 처리기를 이벤트에 추가하는 과정에서 일부 사용자 지정 처리를 수행 할 수 있습니까?

편집
나는 VB.NET에 대해 잘 모르겠지만, 나는 조금 인터넷 검색 및 다음 코드 발견,

Public Delegate Sub WorkDone(ByVal completedWork As Integer) 
Private handlers As New ArrayList() 

Public Custom Event WorkCompleted As WorkDone 
    AddHandler (ByVal value As WorkDone) 
    If handlers.Count <= 5 Then 
     handlers.Add(value) 
    End If 
    End AddHandler 

    RemoveHandler(ByVal value As WorkDone) 
    handlers.Remove(value) 
    End RemoveHandler 

    RaiseEvent (ByVal completedWork As Integer) 
    If completedWork > 50 Then 
     For Each handler As WorkDone In handlers 
     handler.Invoke(completedWork) 
     Next 
    End If 
    End RaiseEvent 
End Event 

이것은 당신이 당신의 이벤트 핸들러를 사용자 정의 할 수 있도록한다을 있도록 수업 내에서 참석자가 이벤트에 추가되는 것을 "볼 수"있습니다.

+0

감사합니다. – Jules

0

관심있는 모든 사람들에게 맞춤 이벤트가 필요없이이를 수행 할 수있는 기회를 가졌습니다.

이벤트 이름 뒤에 이라는 이벤트 이름이 붙는 경우 몇 가지 속성과 메서드에 액세스 할 수 있습니다. Thorsten의 예에서 이벤트를 WorkCompleted 이벤트으로 참조합니다.

이 질문과 관련하여 메서드에 GetInvocationList 이벤트가 첨부 된 대리자 목록을 반환합니다.

WorkCompleted 이벤트 IsNot Nothing은 호출 목록을 검색하지 않고도 이벤트에 대한 처리기가 있는지 여부를 알려줍니다.

등 : 게시물을 제출할 때 이탤릭체가 '*'로 표시됩니다. 이유는 모르겠다.

관련 문제