2008-11-11 2 views
0

вот мой пример код:Как передать событие из дочернего объекта в общий список родительскому?

Public Class Parent 
    Private _TestProperty As String 
    Private WithEvents _Child As IList(Of Child) 

    Public Property Test() As String 
     Get 
      Return _TestProperty 
     End Get 
     Set(ByVal value As String) 
      _TestProperty = value 
     End Set 
    End Property 

    Public Property Child() As IList(Of Child) 
     Get 
      Return _Child 
     End Get 
     Set(ByVal value As IList(Of Child)) 
      _Child = value 
     End Set 
    End Property 

    Private Sub eventHandler Handles _Child 
End Class 

Public Class Child 
    Private _TestProperty As String 
    Public Event PropertyChanged As EventHandler 

    Friend Sub Notify() 
     RaiseEvent PropertyChanged(Me, New EventArgs()) 
    End Sub 

    Public Property Test() As String 
     Get 
      Return _TestProperty 
     End Get 
     Set(ByVal value As String) 
      _TestProperty = value 
      Notify() 
     End Set 
    End Property 
End Class 

как я могу обрабатывать событие, поднятое одним из в Детских родительском объекте? Использование withevents на объекте _child дает мне только события из объекта List (of T).

ТИА

ответ

1

Если бы я тебя, я бы реализовать IList в Родитель с помощью агрегированного списка типизированных, но подписавшись на ребенка события на IList.Add и unsubscibing Удалить. Что-то вроде этого (извините за синтаксис C#).

class Child 
{ 
    public event EventHandler MyEvent; 
} 

class Parent : IList<Child> 
{ 
    List<Child> _list; 

    // IList implementation 
    // ... 
    public void Add(Child item) 
    { 
    item.MyEvent += _ParentChildEventHandler; 
    _list.Add(item); 
    } 

    public void Remove(Child item) 
    { 
    item.MyEvent -= _ParentChildEventHandker; 
    _list.Remove(item); 
    } 

    void _ParentChildEventHandler(object sender, EventArgs e) 
    { 
    Child child = (Child)sender; 

    // write your event handling code here 
    } 
} 
+0

thx, этот способ действительно работа. @ C# синтаксис np Я использую в переводе примеры C# для vb.net :) – 2008-11-11 13:51:07