Wie kann ich die aufrufende Form herausfinden?

  • VB.NET

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

    Wie kann ich die aufrufende Form herausfinden?

    Hallo Vb Paradise Community,

    Ich habe ein Problem, und zwar will ich ein Modul benutzen um den Text von Buttons aus anderen Formen zu ändern.
    Ich wollte mir somit die Schreibarbeit etwas erleichtern und dann in den Formen selber nur noch das Modul aufrufen.
    Ich habe es mit einer Variable versucht, allerdings geht das nicht, da der button kein Teil der Variable ist.
    Meine Frage ist jetzt wie kann ich den Namen der Form herausfinden, aus der das Modul aufgerufen wurde und mit dem Modul den Text vom Button verändern.
    Danke schonmal im voraus. :D
    Mir würde jetzt auf die Schnelle eine Übergabe eines Wertes einfallen Boolean oder soetwas...
    Soetwas z.B

    VB.NET-Quellcode

    1. Public Sub DefineButtonText(whichform as Integer)
    2. if whichform = 1 then
    3. 'Form 1 Aufgerufen
    4. elseif whichform = 2 then
    5. 'Form2 Aufgerufen
    6. end if
    7. end sub


    Code in der Fom

    VB.NET-Quellcode

    1. 'Ins Load-Event Packen oder so.
    2. Public Sub Formload....
    3. classxy.DefineButtonText(2)
    4. end sub


    LG
    Ich werf mal in den Raum: das kommt drauf an.
    Aber erstmal:

    Robert15 schrieb:

    Ich habe es mit einer Variable versucht, allerdings geht das nicht, da der button kein Teil der Variable ist.

    Sorry, den kapier ich nicht. Was hast Du probiert? Poste mal bitte den Code dazu.

    Wenn es nur ein Modul ist, welches im gleichen Thread wie die betroffene Form läuft, dann wäre wohl das einfachste, dass Du Deiner Modulprozedur ne Button-Variable übergibst und damit die Veränderung vornimmst. Das folgende ist zwar eigentlich trivialer Code, aber man weiß ja nie:

    VB.NET-Quellcode

    1. Friend Sub ChangeCaptionOf(CurrentButton As Button, NewCaption As String)
    2. If CurrentButton Is Nothing Then Exit Sub
    3. CurrentButton.Text = NewCaption
    4. End Sub


    Aufruf in der Form: ChangeCaptionOf(Button1, "wasauchimmer")

    Man könnte zwar mit einer programmeigenen Extension noch eins drauflegen, aber halten wir mal den Ball flach, bis klar ist, was Dein eigentlicher Plan ist. Kannst Du noch genauer beschreiben, was Dein konkretes Vorhaben ist?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Robert15 Willkommen im Forum. :thumbup:
    Da ein Modul keine Beziehung zu den Formen Deines Programms hat (es ist wie eine statische Klasse in C#), musst Du die aufrufende Form als Parameter mit reingeben.
    Oder, wie @VaporiZed schreibt, das betreffende Control.
    Alles in allem ist das das falsche Design.
    Gib den betreffenden Formen eine gemeinsame Basisklasse, in die Du diese Funktionalität reipackst und feddich.

    VB.NET-Quellcode

    1. Public Clasc BaseForm
    2. Inherits Form
    3. ' hier Deine Funktionalität
    4. End Class

    VB.NET-Quellcode

    1. Public Class Form1
    2. Inherits BaseForm ' <= dies muss dann in Form1.Designer.vb eingetragen werden
    3. End Class
    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!