"Reference to a non-shared member requires an object reference." Webbrowser

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von TheScripter.

    "Reference to a non-shared member requires an object reference." Webbrowser

    Ich habe hier schon zahlreiche und hilfreiche Antworten erhalten und ich hoffe das trifft auch hier zu.

    Ausgangsstellung:
    Ich habe einen Webbrowser (Awesomium Engine), und ich möchte gerne Shortcuts verwenden.
    F5 für aktualisieren.
    Ctrl + T new Tab
    Ctrl + W close Tab

    So nun zum Problem:
    in der Form wo die Sub zum aktualisieren drinnen ist steht folgendes:

    VB.NET-Quellcode

    1. Public Sub reloadWC()
    2. WebControl.Reload(False)
    3. End Sub


    in der Hauptform folgendes:

    VB.NET-Quellcode

    1. ​Private Sub MainApplication_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    2. If e.KeyCode = Keys.F5 Then reloadWC()
    3. End Sub


    Dabei wird schon ein Fehler in dieser Zeile (If e.KeyCode = Keys.F5 ...) ausgeworfen:
    Reference to a non-shared member requires an object reference.

    Wenn ich jetzt Public Shared Sub reloadWC() schreibe, kommt dieser Fehler:
    Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.

    Was mache ich falsch?
    Andoro Browser (V. 4)
    The new technology of browsing the web.
    Link to browser.

    TheScripter schrieb:

    Was mache ich falsch?
    Verstehe zunächst die Fehlermeldung.
    Beispiel:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim myTest As New Test
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim vv = Test.value ' Fehler 1
    5. End Sub
    6. Private Shared Sub Test2()
    7. myTest.value = 17 ' Fehler 2
    8. End Sub
    9. End Class
    10. Class Test
    11. Public value As Integer = 15
    12. End Class
    bringt 2 Meldungen, die in Deiner vorkommen:
    1. Du greifst auf eine instanziierte Variable zu über den Klassennamen, über den man nur auf konstante und shared Member zugreifen kann.
    2. Du greifst in einer Shared Prozedur auf eine in Deiner Klasse instanziierte Variable zu, auf die Du wegen Shared keinen Zugriff hast.
    Welche dieser Meldungen nun bei Dir zutrifft, musst Du selbst ergründen oder den vollständigen Code posten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke, aber ich habe es schon anders gelöst...
    War zwar sehr umständlich aber es zählt ja bekanntlich nur das Ergebnis.

    Ich glaube das bei mir Punkt 2 zutreffend ist.

    Danke nochmals.
    Andoro Browser (V. 4)
    The new technology of browsing the web.
    Link to browser.

    TheScripter schrieb:

    ich habe es schon anders gelöst.
    Lässt Du uns an Deiner Lösung teil haben?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    TheScripter schrieb:

    aber es zählt ja bekanntlich nur das Ergebnis.
    ähm - das ist nicht "bekanntlich".
    In meiner Welt ist ein zurechtgemurkstes Herumprobier-Zufalls-Ergebnis, ohne Sinn und Verstand so gut wie wertlos bzw. sogar schädlich.
    Weil das nächste Mal wirste den Murks ja wiederholen, statt endlich mal die Grundlagen zu lernen, und wies richtig geht.
    Und wenn solcher Murks dann mal gewartet werden soll, gerät man an den Rand der Verzweiflung. ;(
    Die Lösung ist nicht leicht zu erklären, denn es sind mehrere Forms betroffen, bei denen diese Subs nicht shared sind.

    Ich kenne mich ja auch nicht so gut in VB.Net aus (mein Benutzertitel verrät es ja schon),
    aber ich programmiere Anwendungen die mir den Umgang mit Windows leichter machen.

    Ich programmiere zwar manchmal sehr umständlich und die Datei ist dementsprechend größer,
    aber es ist hauptsächlich für mein Privat-Gebrauch bestimmt.
    Daher ist es mir auch egal, aber Sie @ErfinderDesRades haben natürlich recht,

    ErfinderDesRades schrieb:

    Weil das nächste Mal wirste den Murks ja wiederholen, statt endlich mal die Grundlagen zu lernen, und wies richtig geht.
    Und wenn solcher Murks dann mal gewartet werden soll, gerät man an den Rand der Verzweiflung.

    Ich sollte wirklich die Grundlagen lernen.

    Trotzdem nochmal ein Dankeschön an alle Antworten.
    Andoro Browser (V. 4)
    The new technology of browsing the web.
    Link to browser.