Puesto que dices que estas aprendiendo intentaré ser muy descriptivo:
Yo creo que más que un evento lo que necesitas usar es una propiedad. Una propiedad se usa para modificar y leer el valor de un componente de una clase a través de un interface similar a una lectura o escritura normal. Es decir, si tienes un valor string llamado var1 dentro de clase1 puedes dejarlo como privado (invisible desde fuera) y definir la propiedad var1, crearás el procedimiento set() y la función get() que se corresponden a lo ejecutado cuando se quiere leer o escribir el valor de la propiedad, y ahí puedes introducir todo el código adicional que necesites, si quieres lanzas un evento o modificas el valor directamente. Al principio parecerá algo complicado, pero verás que es una idea muy sencilla, te pongo un ejemplo.
Vamos a crear una clase con un sólo hijo de tipo integer, es la que llevará la propiedad:
* definimos el hijo como miembro privado para ocultarlo (puesto que accederemos a través de la propiedad)
Public Class testclass1
Private my_number As Integer = 0
End Class
Y ahora queremos definir el cómo se lee o escribe my_number así que definimos la propiedad:
* get() y set() deben de tener siempre el mismo nombre, si usas ms visual studio verás que el ide lo escribe automático en cuanto pones get, así que no te preocupes.
* la propiedad tiene tipo así que en este caso usaremos el mismo del valor que queremos modificar, osea integer.
Public Class testclass1
Private my_number As Integer = 0
Public Property number As Integer
Get
'// aquí va el código que se ejecutará al leer,
'// es como una función, necesita return
End Get
Set(ByVal value As Integer)
'// aquí va el código que se ejecutará al escribir
'// es donde quieres ejecutar el código adicional
End Set
End Property
End Class
Bien, ahora vamos a hacer que al leer tan sólo se devuelva el valor de my_number y al escribir lo haga y además lance un evento llamado need_update y que devuelva el valor.
Nos queda así:
Public Class testclass1
Private my_number As Integer = 0
' Defino el evento de testclass1, recuerda que al crear la instancia debes hacerlo usando "withevents"
Public Event need_update(ByVal valor_actualizado As Integer)
Public Property number As Integer
Get
Return Me.my_number
End Get
Set(ByVal value As Integer)
Me.my_number = value
RaiseEvent need_update(my_number)
End Set
End Property
End Class
Recuerda que cuando creas el objeto debes hacerlo así, usando withevents puesto que este objeto contiene un evento que queremos usar:
public withevents nuevotest as new testclass1
A mi personalmente me gusta más no usar eventos puesto que si windows está muy ocupado con muchas tareas va apilando los eventos en una cola y se ejecutan a trompicones. Puedes, si tienes bien localizado el objeto a modificar hacer automáticamente la modificación, es decir, si queremos modificar una clase igual que tu ClaseIncluida2 que se llama "Incluida" y pertenece a form1:
Public Class testclass1
Private my_number As Integer = 0
Public Property number As Integer
Get
Return Me.my_number
End Get
Set(ByVal value As Integer)
Me.my_number = value
form1.Incluida.atributoC21=value
End Set
End Property
End Class
Espero haberte aclarado algunas cosas y espero que sea lo que buscas, si tienes dudas no te cortes en preguntar.