Vererbung: Sub ist in diesem Kontext nicht zugreifbar

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von fichz.

    Vererbung: Sub ist in diesem Kontext nicht zugreifbar

    Ich möchte von einer Klasse erben und eine Methode überschreiben.
    Das Problem ist, dass die Methode am Ende wiederrum eine andere Methode aufruft.
    Diese Methode wird natürlich auch geerbt nur bekomme ich im Studio die Fehlermeldung:
    ProjectReIS.APM2.Private Sub APM_TaskboxLoad()" ist in diesem Kontext nicht zugreifbar, da es "Private" ist.

    Muss ich jetzt die Methode "APM_TaskboxLoad()" auch nochmal komplett neu einfügen obwohl ich dort gar nichts ändern möchte?

    VB.NET-Quellcode

    1. Public Class APM3
    2. Inherits APM2
    3. Dim TaskIndex As Integer
    4. Dim TimeCollection(3) As Collection
    5. Dim swTask As New Stopwatch
    6. 'Track Bar
    7. Private Overloads Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
    8. swTask.Stop()
    9. If TimeCollection(TaskIndex) Is Nothing Then
    10. TimeCollection(TaskIndex) = New Collection
    11. TimeCollection(TaskIndex).Add(swTask.ElapsedMilliseconds)
    12. Else
    13. TimeCollection(TaskIndex).Add(swTask.ElapsedMilliseconds)
    14. End If
    15. lblHilfe.Text = swTask.Elapsed.TotalMilliseconds.ToString()
    16. 'Setzt TaskIndex auf Trackbar-Value
    17. TaskIndex = TrackBar1.Value
    18. 'Load again
    19. APM_TaskboxLoad() '<-----------hier ist der Fehler
    20. End Sub
    21. End Class
    Ist es nicht so, dass "Overloads" nur verwendet werden kann, wenn es andere Übergabeparameter gibt? Steht zumindest so bei MSDN.
    Wenn man überschreibt, verwendet man doch "Overrides" oder?

    Ansonsten, der Logik nach, müsstest du diese private Funktion nochmal reinkopieren, weil du ja keinen Zugriff auf sie sonst hast.
    Ändere die Sichtbarkeit der Methode APM_TaskboxLoad auf Protected.
    Ausserdem überschreibst du nicht sondern "überlädst".

    lg

    EDIT: Gerade gesehen, dass du eine Methode überschreiben willst welche einen Handler besitzt.
    Es gibt zu jedem Event eine OnXXX Methode welche als Overrideable deklariert ist und das eigentliche Event feuert.
    Diese kannst du überschreiben und auf deine Ansprüche abändern.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten