Form1, Form2 soll Wert an Form1 zurückgeben

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Form1, Form2 soll Wert an Form1 zurückgeben

    Hallo,

    ich zerbreche mir gerade den Kopf, wie ich es schaffen könnte von einem Form einen Rückgabewert an verschiedene Form's zu bringen.

    Form1 mit TextBox Schlagwort
    Form2 mit TextBox Schlagwort
    ...in beiden in ein Button mit Link auf Form3

    Form3 mit ListBox... was da angecheckt wird soll dann an das Form (1 oder 2 - je nach dem von wo aus Form3 gestartet wurde) zurückgegeben werden.


    Gruß
    Michl75

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

    Habe es nun so versucht:

    Form1 (das Form2 aufruft):

    VB.NET-Quellcode

    1. Private Sub llbl_SchlagwoerterHinzufügen_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbl_SchlagwoerterHinzufügen.LinkClicked
    2. Dim tempDt As DataTable
    3. Dim testDialog As New SchlagwortUebernahme()
    4. testDialog.ShowDialog()
    5. tempDt = SchlagwortUebernahme._dt
    6. For Each SW In tempDt.Rows
    7. MsgBox(SW.ToString)
    8. Next
    9. End Sub


    Form2 das einen Wert (Datatable) bereit bzw. zurückgeben soll:

    VB.NET-Quellcode

    1. Private Sub btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ok.Click
    2. Me.Close()
    3. End Sub
    4. Public ReadOnly Property _dt As DataTable
    5. Get
    6. Return ArchivBoxDBDataSet.DT_SchlagworterUebernahme
    7. End Get
    8. End Property


    ...habe mir das ergoogelt... Problem aber... meine Datatable ( tempDt ) bleibt leer...

    -> ergoogelt

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „michl75“ ()

    Habs jetzt über ein Modul gelöst:

    Form1:

    VB.NET-Quellcode

    1. Private Sub llbl_SchlagwoerterHinzufügen_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbl_SchlagwoerterHinzufügen.LinkClicked
    2. Dim testDialog As New SchlagwortUebernahme()
    3. testDialog.ShowDialog()
    4. For i As Integer = 0 To dtSW.Rows.Count - 1
    5. Dim Schlagw As String = SWmodule.dtSW.Rows(i).Item(0).ToString
    6. MsgBox(Schlagw)
    7. Next
    8. End Sub
    9. ...
    10. End Class
    11. Public Module SWmodule
    12. Public dtSW As DataTable
    13. End Module


    Form2:

    VB.NET-Quellcode

    1. Private Tab() As String
    2. Private Sub listBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ListBox1.SelectedIndexChanged
    3. For Each Item As DataRowView In Me.ListBox1.SelectedItems
    4. ArchivBoxDBDataSet.DT_Schlagwoerter.Rows.Add(Item(1).ToString)
    5. Next
    6. End Sub
    7. Private Sub btn_ok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_ok.Click
    8. Try
    9. SWmodule.dtSW = ArchivBoxDBDataSet.DT_Schlagwoerter.Copy
    10. Catch ex As Exception
    11. End Try
    12. Me.Close()
    13. End Sub

    michl75 schrieb:

    Habs jetzt über ein Modul gelöst
    Sieh Dir mal folgende Event-Lösung an.
    Ein Projekt mit 2 Forms:
    Form1

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents dlg As Form2
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. If dlg Is Nothing OrElse dlg.IsDisposed Then
    5. dlg = New Form2
    6. End If
    7. If Not dlg.Visible Then
    8. dlg.Show()
    9. End If
    10. End Sub
    11. Private Sub EventFromForm2(sender As System.Object, e As MyEventArgs) Handles dlg.MyOwnEvent
    12. MessageBox.Show("Event angekommen: " & e.MyString)
    13. End Sub
    14. End Class
    Form2

    VB.NET-Quellcode

    1. Public Class Form2
    2. Public Event MyOwnEvent(sender As System.Object, e As MyEventArgs)
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. RaiseEvent MyOwnEvent(Me, New MyEventArgs("bla"))
    5. End Sub
    6. End Class
    7. Public Class MyEventArgs
    8. Inherits EventArgs
    9. Private _myString As String
    10. Public Property MyString As String
    11. Get
    12. Return _myString
    13. End Get
    14. Private Set(value As String)
    15. _myString = value
    16. End Set
    17. End Property
    18. Public Sub New(str As String)
    19. _myString = str
    20. End Sub
    21. 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!
    @Rod
    Oh, habe ich es falsch gemacht, wenn ich einfach meine Argumente in der Eventfunktion übergeben habe?:
    Form1

    VB.NET-Quellcode

    1. Friend WithEvents frm2 As Form2
    2. Dim s As String
    3. Private Sub evfrm2(ByVal str As String) Handles frm2.EventFromFrm2
    4. s= str
    5. End Sub

    Form2

    VB.NET-Quellcode

    1. Event EventFromFrm2(ByVal str As String)
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. RaiseEvent EventFromFrm2("test")
    4. End Sub

    sonne75 schrieb:

    Oh, habe ich es falsch gemacht
    Es geht sicherlich, aber es ist nicht die feine englische Art. Events haben unter .NET standardmäßig die Signatur
    sender As Object
    und
    e As EventArgs (oder von EventArgs abgeleitet).
    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!

    sonne75 schrieb:

    beliebig gestalten kann
    aber nicht soll.
    StyleGuides sind da etwas strenger, die verlangen die von mir aufgeschriebene Struktur.
    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!