Announcement

Collapse
No announcement yet.

MDI, kann kein child aus anderem child öffnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MDI, kann kein child aus anderem child öffnen

    Hallo Ihr alle,

    ich verzweifele gleich! Habe eine MDI-Anwendung gemacht, welche bis gestern einwandfrei funktioniert hat.

    Seit heute kann ich aus einer Child-Form, keine andere Child-Form mehr öffnen!
    Aus dem Menü des Hauptformulares funktioniert es nach wie vor.

    Code:
    Private Sub btn1_Click(sender As System.Object, e As System.EventArgs) Handles btn1.Click
            Dim f As New frmKind
            f.MdiParent = frmHaupt
            f.Show()
    End Sub
    Der Knackpunkt liegt in der Zeile:

    HTML Code:
    f.MdiParent = frmHaupt
    kommentiere ich diese aus, wird die Form geöffnet, zwar außerhalb, aber sie geht auf!

    Dies habe ich plötzlich in der ganzen Anwendung! Bin mir aber keine Schuld bewusst!
    Bin mir aber sicher, dass es gestern noch funktioniert hat, zumindest aus einigen Formularen heraus.

    ICH VERZWEIFEL..

    Habt Ihr so etwas schon mal gehabt?
    Bitte dringend um Hilfe, DANKE

    Jerry

  • #2
    Hallo Jerry

    Verwendest du eine Source-Code Verwaltung?
    Wenn ja, kannst du deinen Code einfach mit der Version von gestern vergleichen und schauen was sich geändert hat.
    Wenn nein... - dann wird es wohl Zeit eine zu installieren. Einer der Klassiker: Subversion
    Wenn dir die Kommandozeile nicht so liegt, kannst du auch diesen hier nehmen: VisualSVN Server


    Gruss

    Comment


    • #3
      Hallo Wernfried,

      nein, verwende ich noch nicht! Bin noch recht am Anfang mit meinem Programmier-Latein.
      Leider habe ich in dieser Entwicklungsstufe auch noch keine versionsabhängige Sicherung, wie in anderen Progs, die im Einsatz sind.
      Ja, ich weiß, blöd.. ;o(

      Dennoch, hat die Anwendung inzwischen einen entsprechenden Umfang. Letztendlich soll es eine Angebots-/Rechnungssoftware mit Kunden-, Lieferanten-, Artikelverwaltung werden.
      Das Ganze basiert auf einem MSSQL 2008 R2 Server als DB Hintergrund.

      Kunden- und Lieferanten- sowie Artikelverwaltung stehen, sind auf der GUI eigentlich fertig. Ja, das "Bügeln / schön machen" fehlt noch.

      Ich habe z.B. auf dem Kundenformular ein DoubleClick Ereignis, welches ein weiteres, kleines Formular zur Kundensuche öffnet.
      Dieses Formular(e) waren die ersten die ich geproggt habe. Sind also schon einige Wochen alt und haben bei jedem Test immer funktioniert.

      Nun war ich dran die Lieferanten- Artikelseite fertig und "schön" zu machen. Ein Button, welche die Artikelsuche öffnen sollte funktionierte nicht.
      Alles rumprobieren, auskommentieren von z.B. Funktionen die prüfen ob das Formular schon offen ist, hat nichts geholfen.
      Da der Button auf einem Tab-Control sitzt, dachte ich zuerst daran, einen neuen Button direkt aufs Formular zu setzen. Evtl. gäbe es im Tab was, was ich noch nicht weiß. Gesagt, getan, ohne Erfolg.

      Dann der Schreck: Im Kundenformular funktioniert es auch nicht mehr!
      In der gesamten Anwendung kann ich die Childs nur noch über ein Menü (TreeView) im Hauptformular öffnen. Aus den Childs keine Chance mehr!
      Auch neue Formulare, zum Test erstellt, ohne irgendwelche Einstellungen, funktionieren nicht.

      Mache ich ein neues Projekt auf, mit z.B. 3 Formularen (ein MDIContainer, 2 Childs) funktioniert es wieder einwandfrei.
      Am VS2010 sollte es also nicht liegen.

      Suche über den heiligen Geist des Gockels hat viel gebracht, leider keine Lösung..!

      Hast Du / habt Ihr noch Ideen?
      Bin drauf und dran die Anwendung ohne MDI umzusetzen. VERZWEIFEL, da es doch schon einige tausend Zeilen Code sind..

      Comment


      • #4
        Schon mal debuggt?
        Hat

        f.MdiParent = frmHaupt

        einen Wert?
        Christian

        Comment


        • #5
          Originally posted by Jerry13 View Post
          Hast Du / habt Ihr noch Ideen?
          Bin drauf und dran die Anwendung ohne MDI umzusetzen. VERZWEIFEL, da es doch schon einige tausend Zeilen Code sind..
          Hi Jerry

          Ich weiss, meine Antworten helfen dir nicht wirklich aber MDI ist heute tatsächlich nicht mehr so "en vogue".


          Gruss

          Comment


          • #6
            Hallo Christian,

            ja, natürlich habe ich debuggt.

            f.MdiParent = frmHaupt hat den Wert: {EDV.frmHaupt, Text: Hauptformular}

            das ist gleich, egal, wo ich das öffne (Menü, oder Child)

            aber danke..

            Comment


            • #7
              Hallo Wernfried,

              ok, noch bin ich zu allen Schandtaten bereit! ;o) Noch ist die Anwendung nicht so groß, noch geht das rel. einfach mit dem Umbau..

              Was ist denn die Alternative zu MDI? Ich fand das eine gute Sache, lasse mich aber gern belehren..

              Danke schon mal..

              Comment


              • #8
                Was ist denn die Alternative zu MDI? Ich fand das eine gute Sache, lasse mich aber gern belehren..
                Du hast nur einen Monitor oder

                Entweder nimmst du einfach unabhängige Dialoge oder da du wahrscheinlich Visual Studio benutzt lass dich von diesem inspirieren.

                Comment


                • #9
                  f.MdiParent = frmHaupt hat den Wert: {EDV.frmHaupt, Text: Hauptformular}
                  Und frmHaupt ist auch wirklich überall die gleiche Instanz der EDV.frmHaupt Klasse? Und nicht ein andere die du aus versehen irgendwo erstellt hast. Aber eben nicht die ist die gerade angezeigt wird?

                  Comment


                  • #10
                    Hallo Ralf,

                    nein, ich sitze vor 2 24 Zöllern! Es bleibt mir allerdings verborgen, was Du damit meinst!

                    mmhhh.. Das mit der Instanz ist eigentlich eine gute Frage. Bin mir nicht wirklich sicher, da ich gar nicht weiß, wie man so eine 2te Instanz erstellt!
                    Habe auch nicht wirklich was geändert, was dies ausmachen sollte. Aber, ich bin durchaus noch am Anfang meiner Programmier-"Karriere" und lerne gern dazu!
                    Wie finde ich das mit der Instanz also raus? Hilfst Du mir?

                    Da ich in anderen Foren User mit den gleichen Problemen gefunden habe, die der MDI dann den Rücken kehrten, anscheinend ohne eine Lösung gefunden zu haben, würde ich die Lösung, wenn "WIR" sie denn finden, gern posten.

                    Gern ertrage ich dabei auch, wenn über mich, den Anfänger, gelacht wird!

                    DANKE schon mal..

                    Comment


                    • #11
                      Originally posted by Jerry13 View Post
                      Was ist denn die Alternative zu MDI? Ich fand das eine gute Sache, lasse mich aber gern belehren..
                      Wie Ralf schon erwähnte, schau' dir mal dein Visual Studio an. Hauptelement ist hier der "ToolStripContainer".

                      Heute nimmt man entweder unabhängige Dialoge oder für jedes Dokument ein eigenes Hauptfenster (z.B. Acrobat Reader) oder man gruppiert seine Objekte in Registern an. Bestes Beispiel hierfür sind die Tabs im Firefox Explorer (und mittlerweile auch alle anderen Browser).


                      Und dann hat heute jedes "schicke" Windows Programm diverse Splitter (horizontal und vertikal) eingebaut.

                      Gruss

                      Comment


                      • #12
                        nein, ich sitze vor 2 24 Zöllern! Es bleibt mir allerdings verborgen, was Du damit meinst!
                        Versuche mal dein MDI Client Fenster sauber auf mehreren Monitoren zu verteilen ohne dir einen Wolf zu sizen. Der Desktop insbesondere seit Windows 7 mit seinen ganzen Desktop Verbesserungen kann das Wunderbar mit einzelnen Fenster. MDI fällt da leider raus. Falls du MS Office benutzt, womit ist es einfacher mehrere Dokumente gleichzeitig zu bearbeiten? Excel oder Word? Wenn du oder deine User Excel sagen bleib bei MDI ansonsten denk dir was anderes aus(wie zum Beispiel SDI bei Word).

                        Bestes Beispiel hierfür sind die Tabs im Firefox Explorer (und mittlerweile auch alle anderen Browser).
                        Normale Tabs wären letztlich auch nur ein simples MDI gut ist die Geschichte erst dann wenn man die Tabs wie in Firefox (oder Visual Studio) als unabhängige Fenster rausziehen kann.

                        Comment


                        • #13
                          Bin mir nicht wirklich sicher, da ich gar nicht weiß, wie man so eine 2te Instanz erstellt!
                          Das new Keyword erstellt dir eine neue Instanz.

                          Code:
                          Dim frmHaupt As New EDV.frmHaupt
                          Würde dir jemals an der Stelle eine neue Instanz erzeugen. Nur weil die Variable genauso heißt wie an andere Stelle wäre das dann eine andere Form.

                          Dein gezeigter btn1_Click Code würde ja auch bei jedem Aufruf eine weitere frmKind Form erzeugen und neben/über den anderen anzeigen. Da fällt mir ein wenn der btn1_Click Code auf der frmHaupt liegt ersetz doch mal in der Zuweisung

                          Code:
                          f.MdiParent = frmHaupt
                          das frmHaupt durch ME. Wenn das hilft habe ich mit den Instanzen richtig geraten.

                          Comment


                          • #14
                            So, jetzt dürft Ihr alle lachen..!

                            Ich habe das Problem gefunden! DANKE an Ralf, Du hast mir den richtigen Tritt verpasst!

                            Nachdem ich bei einer Tasse Tee und einer Zigarette über die Instanzen nachdachte, fiel es mir wie Schuppen aus den Haaren.
                            Ich hatte ein neues Anmeldeformular für die DB, den MSSQL-Server eingebaut. Dieses als Startformular zugewiesen, welches erst die Berechtigung auf der DB prüft und, wenn BN und PW richtig sind, dann erst das Hauptformular öffnet.
                            Hier liegt der Hase begraben. Formular deaktiviert.. geht wieder..

                            Ist mir zwar nicht ganz klar, warum dies sich so verhält (bin gern lernfähig, wenn mir dies einer sagen kann) aber es funktioniert wieder!

                            DANKE, DANKE, danke...

                            Gruß vom Jerry an alle und im besonderen an Ralf, Ihr seid die Besten!!

                            Comment


                            • #15
                              Hallo Ralf,

                              das war nun fast gleichzeitig mit den Posts.. "grins"

                              Ok, das mit dem Schlüsselwort "new" wusste ich. Dachte nur an was anderes..

                              Danke noch mal..

                              Comment

                              Working...
                              X