Text mit Events erzeugen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Text mit Events erzeugen

    Hallo,
    ich möchte zwei Masken haben die sich beim Start des Programms öffnen frm2.Show(), zum einen soll mit einem RaiseEvent der einen Maske (Maske1),
    das Handle Event der anderen (der Maske2) abgefangen werden. Hierbei würde ich gerne bei Maske1 einen Button und bei Maske2 ein Label einsetzen.
    Weiß nur noch nicht wie ich das umsetze. Kann mir da jemand weiterhelfen?

    Viele Grüße
    @adnanche Was davon soll auf / in welchen Formen passieren?
    Gugst Du Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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!
    Was ist Dein Startformular und in welchem Verhältnis stehen Maske1 und Maske2 zueinander? Das entscheidet darüber, wie Du vorgehen musst.
    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.
    Wenn entsprechend RfGs verlinktem Thread Maske1 als Hauptform zu eine gewünschten Zeitpunkt Maske2 instanziiert und als Nicht-Dialog anzeigt, kann Maske1 mit Maske2 machen was es will, da es vollen Zugriff auf die Friend- und Public-Member von Maske2 hat. Maske2 hingegen kann an Maske1 nur Änderungen per Event erbitten, aber das hast Du ja eh nicht vor.
    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.
    @adnanche Wenn beide Formen jeweils vollen Zugriff auf den anderen haben sollen, machst Du vielleicht eine gemeinsame Form mit einem TableLayoutPanel mit 2 Spalten und einer Zeile, wo jedes Panel von einer "bisherigen" Form befüllt wird.
    Wenn die Kommunikation / Eingabe beendet ist, gibst Du der Breite des zweiten Panels den Wert 0 und die (halbe) Form ist verschwunden.
    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!
    So wollte ich das ganze lösen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim frm2 As New Form2
    4. frm2.Show()
    5. End Sub
    6. Private WithEvents frm2 As Form2
    7. Public Event Testing(sender As System.Object, e As System.EventArgs)
    8. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    9. RaiseEvent Testing(Me, EventArgs.Empty)
    10. End Sub

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. AddHandler Form1.Testing, AddressOf Testing
    4. End Sub
    5. Private Sub Testing()
    6. Label1.Text = "blablabla"
    7. End Sub
    8. End Class



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „adnanche“ ()

    adnanche schrieb:

    VB.NET-Quellcode

    1. AddHandler Form1.Testing, AddressOf Testing
    Das funktioniert so nicht, da Form1 hier die nicht .NET-kompatible ranz VB6-Kompatibilitäts-Instanz ist.
    Ruf doch einfach auf:

    VB.NET-Quellcode

    1. frm2.Testing()
    und feddich.
    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!

    RodFromGermany schrieb:


    Ruf doch einfach auf...


    Greife ich mit Visual Studio 2013 auf die VB6-Kompatibilitäts-Instanz zurück, obwohl ich .NET Framework 4.5.1 nutze? Weil bei mir funktioniert es nur mit

    VB.NET-Quellcode

    1. AddHandler Form1.Testing, AddressOf Testing


    *Vollzitat entfernt* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    @adnanche Die Aufruf-Kette ist so nicht vorgesehen.
    Dass es leider doch geht, ist VB-Mist, in C# geht solch nämlich nicht.
    Du erstellst die Instanz einer Klasse und weist einem Event dieser Klasse einen Handler zu:

    VB.NET-Quellcode

    1. Using dlg = New FormX
    2. AddHandler dlg.MY_EVENT, AddressOf EVENT_HANDLER
    3. dlg.ShowDialog()
    4. End Using
    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!