Announcement

Collapse
No announcement yet.

WindowsForms - öffnen von Form2 über Form1 mittels Button

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

  • WindowsForms - öffnen von Form2 über Form1 mittels Button

    Hallo,

    wie stell ich es am besten an bei WindowsForms Form2 über Form1 zu öffnen? Wollte das so machen, dass der Nutzer auf einen "WEITER"-Button klickt und sich dann ein neues Form öffnet. Aber wie stell ich das an? Finde hierfür auch keinen wirklich geeigneten Ansatz. Habe gedacht es klappt so:
    [highlight=c#]

    private void Weiter_Click(object sender, EventArgs e) // Führt zur Registrierung
    {
    Show(Form2_Load);
    }

    [/highlight]

    Problem hierbei ist allerdings, dass es nicht klappt, obwohl Form2 auch in Form1 als Projekt enthalten ist. (wurde über datei -> hinzufügen -> vorhandenes Projekt eingefügt -> liegt da vielleicht mein Fehler?)

    Bin für Anregungen und Tipps jederzeit offen.
    Gruß
    Flachsi87


    Was ich nutze:
    VS 2008, MS SQL Server 2005

    Kenntnisstand:
    Laie/Interessiert aber sehr unwissend

  • #2
    Hallo,

    eine Form ist eine Klasse und um Klassen vewenden zu können muss eine Instanz davon erzeugt werden -> somit existiert ein Objekt dieser Klasse. Dieses Objetk und nur dieses Objekt kann verwerdet werden. *

    Objkete werden über den Konstruktor erstellt.

    D.h.:
    [highlight=c#]
    private void Weiter_Click(object sender, EventArgs e) // Führt zur Registrierung
    {
    Form2 frm = new Form2(); // Objekt von Form2 erstellen:
    frm.Show(); // Form2 anzeigen
    }
    [/highlight]

    mfG Gü


    * Die Ausnahme hierzu bieten statische Klassen von denen keine Instanz erstellt werden kann. Bei diesen Klassen wird auch nicht von Instanzmembern sonder von Typmembern gesprochen.
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hi,

      ich muss trotzdem irgendwo einen Fehler gemacht haben (glaube beim Hinzufügen von Form2)
      Originally posted by Fehlermeldung
      Fehler 1 Der Typ- oder Namespacename "Form2" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
      Was muss ich denn genau tun um diesen Fehler zu beheben?
      Gruß
      Flachsi87


      Was ich nutze:
      VS 2008, MS SQL Server 2005

      Kenntnisstand:
      Laie/Interessiert aber sehr unwissend

      Comment


      • #4
        In .net besteht der Name eines Typs aus Namespace + '.' + Klassenname..

        [highlight=c#]
        namespace MyNamespace
        {
        class MyClass
        {
        ...
        }
        }
        [/highlight]
        So lautet die korrekte Bezeichnung von MyClass -> MyNamespace.MyClass
        Da dies aber lästig ist kann mit der using-Direktive der Namespace eingebunden werden und somit kann vereinfacht "MyClass" geschrieben werden.

        Wenn du in Visual Studio einen Bezeichner für einen Typ eingibts wid oft der letzte Buchstabe rost-braun unterstrichen -> dies deutet darauf hin dass der Namespace des Typ nciht importiert ist. Durch Alt + Shift + F10 erscheint dann ein PopUp das das Imporitieren erleichert.

        Ist der Typ und der Namespace in einer Assembyl auf die nicht verwiesen ist muss der Verweis darauf zuerst hergestellt werden. Rechte Maus auf Verweise -> Verweis hinzufügen -> ...


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Hi,

          es klappt jetzt... hab das Projekt, in dem das eigentliche Form2 ist, kopiert und direkt ins Projekt (von Form1 geschrieben (durch Projekt -> WindowsForm hinzufügen)) so hab ich jetzt alles was ich wollte.

          Danke, denn deine Erklärung hat mir dabei echt geholfen
          Gruß
          Flachsi87


          Was ich nutze:
          VS 2008, MS SQL Server 2005

          Kenntnisstand:
          Laie/Interessiert aber sehr unwissend

          Comment


          • #6
            Entschuldige die Doppelpost, aber wie bekomm ich es hin, dass Form1 nach öffnen von Form2 automatisch geschlossen wird?
            Gruß
            Flachsi87


            Was ich nutze:
            VS 2008, MS SQL Server 2005

            Kenntnisstand:
            Laie/Interessiert aber sehr unwissend

            Comment


            • #7
              aber wie bekomm ich es hin, dass Form1 nach öffnen von Form2 automatisch geschlossen wird?
              Dazu muss ich - wieder mal - etwas ausholen.

              Mit der Anweisung (die typischerweise in Program.cs steht)
              [highlight=c#]
              Application.Run(new Form1());
              [/highlight]
              wird die Standardnachrichtenschleife gestartet. Dies ist ein großer Vorteil denn dadurch wird es erst möglich dass du im Code Ereignisse wie der Klick auf einen Button behandeln kannst.
              Wird jetzt Form1 geschlossen so bedeutet das auch dass die Nachrichtenschleife und somit die Anwendung geschlossen wird.

              Daher kann Form1 nicht so einfach geschlossen werden - es ist sozusagen das Hauptformular für die Anwendung (wegen Application.Run(new Form1()).
              Es ist jedoch möglich die Form zu verstecken -> form1.Hide().

              Welche Möglichkeiten gibt es?
              • Verwendung eines selbst erstellten ApplicationContext der Verhalten vorgibt.
              • Verwendung einer Art Controller der verwaltet wann welches Formular was tut -> entspricht semantisch der obigen Variante ist nur anders implementiert.


              Der zweite Punkt kann zB über ein gemeinsamen Hauptformular umgesetzt werden.


              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment


              • #8
                Hi,

                Danke, ohne dich würd ich immer noch ratlos grübeln
                Gruß
                Flachsi87


                Was ich nutze:
                VS 2008, MS SQL Server 2005

                Kenntnisstand:
                Laie/Interessiert aber sehr unwissend

                Comment


                • #9
                  Für das, was du vorhast, könntest du auch durch Mit Forms eine Art Frameset einer Website nachbauen? (Navigation, Wizard, Assistent) Anregungen bekommen. Jürgen

                  Comment


                  • #10
                    Hi,

                    so gefällt es mir nicht wirklich.... aber es ist auch eine gute Variante, um das mit dem "Form1 schließen" zu umgehen, da hast du recht. danke für den Link.
                    Gruß
                    Flachsi87


                    Was ich nutze:
                    VS 2008, MS SQL Server 2005

                    Kenntnisstand:
                    Laie/Interessiert aber sehr unwissend

                    Comment

                    Working...
                    X