Form anzeigen nicht laden mit string

vestibulo

Grünschnabel
hallo ich habe alles ab gegoogelt und nichts gefunden...
ich habe folgendes Problem:
Ich habe mehrere formen auf denen ich z.B. Buttons färbe oder eine Listbox mit Daten fülle zwischen diesen formen kann ich mit Hilfe von Buttons hin und her "springen".
die Buttons sind wie ein Menu (ein richtiges Menu habe ich nicht erstellt da ich ein Programm für einen Touchscreen erstelle und die schrift zu klein wäre).Ich klicke also auf einen Button wo mir auf einer form verschiedene Buttons (Untermenu) angezeigt werden. wähle ich einen zeigt er mir auf einer anderen form z.b chek boxen an die man aktivieren kann. springe ich wie bisher jetzt in eine andere form sind die checkboxen logischerweise noch aktiv denn ich blende ja die jeweilige form nur ein und aus.ich möchte die formen aber gerne auf einen Button legen(speichern) damit ich sie egal wo ich mich befinde einblenden kann. ich habe zwar eine Möglichkeit gefunden sie zu laden aber dabei gehen meine Daten verloren weil ich die form ja lade.
gibt es eine Möglichkeit einen Formnamen zu speichern um die form dann wieder einzublenden?

ich hoffe ich habe mein Problem verständlich beschrieben...
danke schonmal im vorraus für eure Hilfe
 
Mal davon abgesehen, dass ich Augenkrebs beim lesen bekommen habe (bitte etwas strukturierter schreiben), denke ich dass du Formen wahrscheinlich mit .Load anzeigst bzw. mit .Unload schließt. Da werden dir Grundeinstellungen der Formel verloren gehen, wenn du eine Form mit .Hide versteckst und dann mit .Show anzeigst, bleibt alles so, wie es war.


Der Doc!
 
Hallo und danke für die Antwort. Leider hat mir das wenig geholfen.Trotzdem hab ich eine Lösung gefunden. Ich hab den folgenden code für meine Anwendung umgewurschtelt und es funktioniert. Schade nur das ich jede Form die ich habe einzeln in das case eintragen muss. Hat vielleicht jemand ne Idee wie es leichter gehen könnte?

Visual Basic:
   Option Explicit

   'Commandbutton auf Form1
   Private Sub Command1_Click()
   Dim frmName As String
    
       frmName = "Form2"
       ShowForm (frmName)
    
       frmName = "Form3"
       ShowForm (frmName)
 
   End Sub

Function ShowForm(frmName As String)

     Dim frm As Form
     Dim blnExist As Boolean
     Dim Result As VbMsgBoxResult

blnExist = False

    
     'Sucht in Forms-Collection nach dem Namen...
     For Each frm In Forms
         If frm.Name = frmName Then
             blnExist = True
             frm.Show
         End If
     Next
 
     '...falls nicht vorhanden wird die Form erst geladen und dann angezeigt.
     If Not blnExist Then
         If MsgBox(frmName & " ist derzeit nicht geladen" & vbCrLf & "Wollen Sie die Form laden ?", _
                           vbYesNo, _
                           frmName & " laden") = vbYes Then
                  
             Select Case frmName
                 Case "Form2"
                     Load Form2
                 Case "Form3"
                     Load Form3
                 'Case "..." usw...
             End Select
            
             Forms(Forms.Count - 1).Show
            
          End If
      End If    
  End Function
 
Wozu das Ganze?

Wie der Doc schon sehr richtig gesagt hat, musst Du statt "Load Form1" nur "Form1.Show" verwenden. Bei Aufruf der Show-Funktion wird, falls die Form noch nicht geladen ist, automatisch das Load-Ereignis zuerst aufgerufen. Falls die Form bereits geladen ist, wird das Load-Ereignis logischerweise nicht noch einmal aufgerufen, so dass die bereits eingegebenen Daten der Form erhalten bleiben.

Die von Dir aufgeführte Funktion baut das nach, was VB bereits serienmäßig ohne zusätzlichen Programmcode ohnehin macht (abgesehen davon, dass VB standardmäßig keine Abfrage macht, ob die Form nun wirklich geladen werden soll, was in der Regel aber wohl auch ziemlich blödsinnig ist -> Wenn man den Button klickt, um eine andere Form laden, will man da sicherlich nicht nochmal extra gefragt werden!
 
Zurück