tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
471
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Hallo,

    ist es möglich durch eine selbstgebaute Funktion eine Form anzuzeigen?

    Hatte mir das folgendermaßen vorgestellt:

    Code :
    1
    2
    3
    4
    5
    
    public static void GoToNextForm( Form frmToShow )
    {
       frmToShow newForm = new frmToShow();
       newForm.Show();
    }

    Aber das geht leider nicht. .NET meckert dann bei "frmToShow" dass es keine Klasse ist - verständlich! Aber wie könnte man es dann anstellen?

    Habe eben 5 Formen, diese heißen alle nach dem gleichen Schema: "frmXYZ".
    Durch den Aufruf von GoToNextForm( frmMain ) will ich also zum Beispiel wieder die Hauptform anzeigen lassen.

    Irgendwie möglich?


    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  2. #2
    Manuel Egger Manuel Egger ist offline Mitglied
    Registriert seit
    Jun 2004
    Ort
    Österreich / Kärnten
    Beiträge
    11
    frmToShow ist ja keine Klasse sondern ein Objekt! Du brauchst ja nichts neues mehr anlegen.
    Probiers mal damit:
    Code :
    1
    2
    3
    4
    
    public static void GoToNextForm( Form frmToShow )
    {
        frmToShow.Show();
    }



    Statt das über eine eigene Methode zu machen brauchst du das ja nur so zu schreiben:
    Code :
    1
    2
    3
    
    ...
    frmMeinFormObjekt.Show();
    ...
    Es ist ja ein Blödsinn dafür eine eigene statische Methode zu machen die nichts anderes macht als .Show();
     

  3. #3
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Nun gut, ich bräuchte es aber in einer Funktion, da er noch mehrere Sachen dabei machen soll.

    Habe das jetzt mit
    Code :
    1
    2
    3
    4
    
    public static void GoToNextForm( Form frmToShow )
    {
        frmToShow.Show();
    }
    probiert, funktioniert aber nicht. Wenn ich dann auf einen Button klicke, der diese Funktion aufruft, passiert gar nichts!

    Muss eine Form die angezeigt werden soll, nicht davor erst irgendwie geladen werden?

    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  4. #4
    Registriert seit
    Aug 2002
    Ort
    Passau / Bayern
    Beiträge
    344
    Wie erstellst Du denn das Objekt der Form-Klasse?

    Nehmen wir mal an Deine Form-Klasse heisst "FrmTest". Dann muss der Code in Deinem Button so aussehen:
    Code :
    1
    2
    3
    
    FrmTest frm = new FrmTest();
     
    GoToNextForm(frm);
    Sollte so klappen. Habs ausprobiert.
     
    Das Leben ist sch**ße ... aber die Grafik ist geil!

  5. #5
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    ok, so klappt das dann auch, vielen Dank!

    Habe dazu noch eine Frage: wenn ich von der einen Form dann zur anderen springe: wie kann ich die alte Form entladen? Weil wenn ich sie nur verstecke (.Hide) dann wird das Programm durch this.Close() nicht komplett beendet, sondern hängt noch in den Prozessen rum. this.Close() entlädt ja dann höchstwahrscheinlich nur die eigene Form. Wenn ich jetzt aber diese Funktion GoToNextForm aufrufe, funktioniert der Befehl this.Close() bei der alten Form nicht - warum auch immer

    Die alternative wäre eine Funktion, die das komplette Programm beendet, so etwas wie bei VB die Funktion "End", welche alle Formen automatisch entlädt, die noch aktiv sind. Gibt es so etwas vielleicht bei C#?

    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  6. #6
    Paranoxx Tutorials.de Gastzugang
    Code :
    1
    
    Application.Exit();
    Der befehl "killt" dein Programm sehr gut und aggressiv
     

  7. #7
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Nach etwas rumsuchen im Forum hatt ich das doch auch gefunden, trotzdem vielen dank für die Antwort!

    Hab da einfach mal noch eine Frage (bezieht sich nur weitgehenst auf die Formen), und zwar:

    Kann ich einer Funktion eine Klasse übergeben?

    Damit ich dann (in diesem Beispiel) der Funktion GoToNextForm(...) die Klasse der neuen Form übergeben kann, und die Funktion baut sich selber ein objekt und zeigt das an!

    Möglich oder nicht?

    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  8. #8
    Manuel Egger Manuel Egger ist offline Mitglied
    Registriert seit
    Jun 2004
    Ort
    Österreich / Kärnten
    Beiträge
    11
    Möglich wäre das du das über Reflection machst!

    Vielleicht solltest du dir mal die Klasse System.Type anschauen.

    Wobei sich die Frage stellt inwiefern das Sinn macht.
    Wäre ja einfach, nur einen Enum-Wert zu übergeben und in deiner statischen Methode abhängig vom Wert ein Formular zu erzeugen.


    PS: Form = Das Formular und nicht die Form
     

  9. #9
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Super: das mit einem enum ist ne gute Idee! Dann kann ich das gleiche machen, wie wenn ich die Klasse direkt übergeben würde. Vielen Dank!

    So, und jetzt noch eine Frage: gibt es in C# bei Steuerelementen (bei mir jetzt Option-Felder = radioButton) Indexe, also zum Beispiel habe ich 5 Options-Felder:

    optTest(0) - optTest(5)

    gibts das? Und wenn, wie bekomme ich das auf der Form (auf dem Formular) hin, dass er mir (so wie es in VB ist) beim kopieren eines Options-Feldes einen Index anlegt?

    mfG

    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  10. #10
    Avatar von Gorcky
    Gorcky Gorcky ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    n. Bad Bramstedt (Schleswig-Holstein)
    Beiträge
    351
    Original geschrieben von MAN
    wie kann ich die alte Form entladen? [...]
    Wenn ich jetzt aber diese Funktion GoToNextForm aufrufe, funktioniert der Befehl this.Close() bei der alten Form nicht - warum auch immer
    Kannst da natürlich auch die andere mit übergeben, das schließt die Form immer dann, wenn du sie verlässt und du hast nicht bis zum Schluss noch zig Forms offen.
    Code :
    1
    2
    3
    
     FrmTest frm = new FrmTest();
    GoToNextForm(frm, this);
    }
    Code :
    1
    2
    3
    4
    5
    
     public static void GoToNextForm( Form frmToShow,Form frmToClose  )
    {
        frmToShow.Show();
        frmToShow.Close();
    }
     
    MfG
    Gorcky

  11. #11
    Avatar von Gorcky
    Gorcky Gorcky ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    n. Bad Bramstedt (Schleswig-Holstein)
    Beiträge
    351
    Da solltest du dir mal die RadioButtonGroup anschauen.
    (Habe bisher nur in ASP damit gearbeitet, hoffentlich ist die Komponente nicht auch anders)
    Da musst du deine gewünschten Buttons als Items in die die Group reinpacken und kannst da auch mit 'nem Index drüber gehen.
     
    MfG
    Gorcky

Ähnliche Themen

  1. Web Form öffnen
    Von Jejune im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 04.08.07, 17:02
  2. Form von Form öffnen
    Von cadaei im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 02.08.07, 22:37
  3. Werte einer Form über eine 2te Form in einer 3ten Form anzeigen
    Von zioProduct im Forum .NET Windows Forms
    Antworten: 8
    Letzter Beitrag: 14.10.05, 08:56
  4. Neue Form öffnen
    Von RockCell im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 16.06.05, 08:39
  5. Form aus Modul öffnen
    Von hofchr im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 31.08.04, 08:19