form1.show=me.refresh?

  • VB.NET

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

    form1.show=me.refresh?

    Moin,
    folgendes Problem:
    ich habe einige sachen, die auf form.load liegen.
    wenn ich jetz eine andere form "aktiviere" mit me.hide und formx.show, dann wird ja der form.load bereich ja nicht nochmal ausgeführt. wie kann ich es machen das der bereich nochmal ausgeführt wird? me.refresh in form.load funktioniert auch nicht, wobei mir gerade einfällt, das es ja sowieso nicht geht weil der teil nicht nochmal ausgeführt wird.
    achja, und das was angezeigt wird aus dem form.load bereich ist form übergreifend, da es aus einer txt datei kommt.

    MfG
    Machst Du in der Form_Load ein Me.Hide()?
    Das ist wohl nicht ganz im Sinne des Erfinders.
    Ein Me.Show() zeichnet in jedem Fall die Form neu.
    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!
    Weiss net, ob die Lösung gut ist, aber sie funktioniert immerhin:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Initialisiere()
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. Me.Hide()
    7. Form2.Show()
    8. End Sub
    9. End Class
    10. Module Test
    11. Public Sub Initialisiere()
    12. MsgBox("Blubb")
    13. End Sub
    14. End Module

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Me.Hide()
    4. Form1.Show()
    5. Initialisiere()
    6. End Sub
    7. End Class



    Probier es mal aus. Ich hoffe es ist selbsterklärend.
    aber wie soll ich die dann wieder aufrufen? weil beim ersten mal aufrufen wird ja form.load verwendet, aber beim zweiten mal wo aus dem hide show wird wird es ja nicht nochmal geladen. d.h. ich bräuchte etwas was bei .show dann etwas macht.
    Lol
    Die MessagBox ist lediglich dazu da, um möglichst einfach zu zeigen, das dieser Code einmal im normalen Form1_Load aufgerufen wird und auch, wenn du aus Form2 die Form1 wieder sichtbar machst. Du schreibst allen Code, außer Initialisieren() nicht ins Form1_Load, sondern in die Public Sub des Moduls.

    Getestet hast du es wohl nicht, oder? Der obere Kasten ist der Code für Form1 , der untere für Form2. Eventuell musst du die Reihenfolge der Aufrufe in Form2 umstellen, also erst Initialisiere() dann Form1.Show().
    ok, das hat schonmal besser geklappt. danke. doch ein problem ist noch da: wenn ich die datein lösche, machen sie nichts, also laden auch nichts in die listboxen. vorher hatte er da nicht rumgemeckert. aber jetzt meckert er bei form2 rum. macht er bei form3 nicht, obwohl es im grunde genommen der gleiche code ist:

    VB.NET-Quellcode

    1. Module Module1
    2. Public Sub initialisieren()
    3. Dim Pfad1 As String = Application.StartupPath & "\Konto\egrunddatei.txt"
    4. Dim pfad2 As String = Application.StartupPath & "\Konto\ebetragshöhe.txt"
    5. Dim pfad3 As String = Application.StartupPath & "\Konto\edatum.txt"
    6. Dim pfad4 As String = Application.StartupPath & "\Konto\gesamt.txt"
    7. Form2.ListBox1.Items.AddRange(IO.File.ReadAllLines(Pfad1))
    8. Form2.ListBox2.Items.AddRange(IO.File.ReadAllLines(pfad2))
    9. Form2.ListBox3.Items.AddRange(IO.File.ReadAllLines(pfad3))
    10. Form2.Label4.Text = IO.File.ReadAllText(pfad4)
    11. End Sub
    12. Public Sub initialisieren2()
    13. Dim Pfad1 As String = Application.StartupPath & "\Konto\agrunddatei.txt"
    14. Dim pfad2 As String = Application.StartupPath & "\Konto\abetragshöhe.txt"
    15. Dim pfad3 As String = Application.StartupPath & "\Konto\adatum.txt"
    16. Dim pfad4 As String = Application.StartupPath & "\Konto\gesamt.txt"
    17. Form3.ListBox1.Items.AddRange(IO.File.ReadAllLines(Pfad1))
    18. Form3.ListBox2.Items.AddRange(IO.File.ReadAllLines(pfad2))
    19. Form3.ListBox3.Items.AddRange(IO.File.ReadAllLines(pfad3))
    20. Form3.Label4.Text = IO.File.ReadAllText(pfad4)
    21. End Sub
    22. Public Sub initialisieren3()
    23. Dim Pfad1 As String = Application.StartupPath & "\Konto\egrunddatei.txt"
    24. Dim pfad2 As String = Application.StartupPath & "\Konto\ebetragshöhe.txt"
    25. Dim pfad3 As String = Application.StartupPath & "\Konto\edatum.txt"
    26. Dim pfad4 As String = Application.StartupPath & "\Konto\gesamt.txt"
    27. Dim Pfad5 As String = Application.StartupPath & "\Konto\agrunddatei.txt"
    28. Dim pfad6 As String = Application.StartupPath & "\Konto\abetragshöhe.txt"
    29. Dim pfad7 As String = Application.StartupPath & "\Konto\adatum.txt"
    30. Form4.ListBox1.Items.AddRange(IO.File.ReadAllLines(Pfad1))
    31. Form4.ListBox2.Items.AddRange(IO.File.ReadAllLines(pfad2))
    32. Form4.ListBox3.Items.AddRange(IO.File.ReadAllLines(pfad3))
    33. Form4.Label4.Text = IO.File.ReadAllText(pfad4)
    34. Form4.ListBox4.Items.AddRange(IO.File.ReadAllLines(Pfad5))
    35. Form4.ListBox5.Items.AddRange(IO.File.ReadAllLines(pfad6))
    36. Form4.ListBox6.Items.AddRange(IO.File.ReadAllLines(pfad7))
    37. End Sub
    38. End Module

    ich habe keine ahnung wo dran das liegt... ich bekomme beim laden von form2 immer einen verweis auf

    VB.NET-Quellcode

    1. Dim Pfad1 As String = Application.StartupPath & "\Konto\egrunddatei.txt"

    das die datei nicht gefunden werden konnte. klar, wenn es die datei nicht gibt, ok, aber bei den andern macht er es nicht.
    edit: ok er macht es jetzt bei allen formen, vorher war das initialisieren2 und initialisieren3 noch ausgeklammert, jetzt macht er es da auch. er macht es aber anscheind nur im modul. wenn ich das wieder in form.load mache geht es ganz normal
    Hat jetzt wenig mit deinem Problem zu tun (da ich eh net verstehe, was es ist), aber der Code ist etwas umständlich.

    Es reicht doch, wenn du den Pfad bis zu einer bestimmten Datei einmal deklarierst, so sparst du ne menge Tipperei und Variablen.

    VB.NET-Quellcode

    1. Module Module1
    2. Public Basepfad As String = Application.StartupPath & "\Konto\"
    3. Public Sub initialisieren()
    4. Form2.ListBox1.Items.AddRange(IO.File.ReadAllLines(Basepfad & "egrunddatei.txt"))
    5. Form2.ListBox2.Items.AddRange(IO.File.ReadAllLines(Basepfad & "ebetragshöhe.txt"))
    6. Form2.ListBox3.Items.AddRange(IO.File.ReadAllLines(Basepfad & "edatum.txt"))
    7. Form2.Label4.Text = IO.File.ReadAllText(Basepfad & "edatum.txt")
    8. End Sub
    9. '
    10. '
    11. '
    12. End Module
    Mützt Dir dieses hier was?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Using dlg As New Form2
    4. Me.Hide()
    5. dlg.ShowDialog()
    6. End Using
    7. Me.Show()
    8. End Sub
    9. Private Sub Form1_VisibleChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.VisibleChanged
    10. MessageBox.Show(Me.Visible.ToString)
    11. End Sub
    12. 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!