Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Consider this as your base class:</p> <pre><code>Public Class First Public Event ThemeToUseChanged As EventHandler Public Event ThemeToUseChanging As EventHandler Public Property ThemeToUse() As String Get Return Me.m_themeToUse End Get Set(ByVal value As String) If (value &lt;&gt; Me.m_themeToUse) Then Me.OnThemeToUseChanging(EventArgs.Empty) Me.m_themeToUse = value Me.OnThemeToUseChanged(EventArgs.Empty) End If End Set End Property Protected Overridable Sub OnThemeToUseChanged(ByVal e As EventArgs) If (Not Me.ThemeToUseChangedEvent Is Nothing) Then Me.ThemeToUseChangedEvent.Invoke(Me, e) End If End Sub Protected Overridable Sub OnThemeToUseChanging(ByVal e As EventArgs) If (Not Me.ThemeToUseChangingEvent Is Nothing) Then Me.ThemeToUseChangingEvent.Invoke(Me, e) End If End Sub Private m_themeToUse As String End Class </code></pre> <p>And this class inherits everything from <code>First</code> class:</p> <pre><code>Public Class Second Inherits First End Class </code></pre> <p>Now you can add handles to both the <code>ThemeToUseChanged</code> event and the <code>ThemeToUseChanging</code> event of each object:</p> <pre><code>Public Class Form1 Public Sub New() Me.InitializeComponent() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Test: Me._first.ThemeToUse = New Guid().ToString() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'Test: Me._second.ThemeToUse = New Guid().ToString() End Sub Private Sub ThemeToUseChanged(sender As Object, e As EventArgs) Handles _first.ThemeToUseChanged, _second.ThemeToUseChanged If (sender Is Me._first) Then 'ThemeToUseChanged changed of type `First` ElseIf (sender Is Me._second) Then 'ThemeToUseChanged changed of type `Second` End If End Sub Private Sub ThemeToUseChanging(sender As Object, e As EventArgs) Handles _first.ThemeToUseChanging, _second.ThemeToUseChanging If (sender Is Me._first) Then 'ThemeToUseChanging changed of type `First` ElseIf (sender Is Me._second) Then 'ThemeToUseChanging changed of type `Second` End If End Sub Private WithEvents _first As New First Private WithEvents _second As New Second End Class </code></pre> <p>And if you consider a <code>Third</code> class inherits <code>Second</code>:</p> <pre><code>Public Class Third Inherits Second End Class </code></pre> <p>This is how you can loop through the inheritance chain:</p> <pre><code>Dim obj As First = New Third() Dim t As Type = obj.GetType() Do MsgBox(t.FullName) t = t.BaseType Loop Until (t.BaseType Is Nothing) </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload