Entwickler-Ecke

WinForms - form im selben fenster öffnen


baggyownz - So 15.06.08 20:25
Titel: form im selben fenster öffnen
hallo

ich bin neuling im c# proggen und probier mich da gerade ein bissl aus.. bin aber grad an eine grenze gestoßen..
und zwar hab ich verschiedene forms und will quasi mit einem "weiter" button immer zur nächsten "springen" wie dies funktioniert hab ich hier schon im forum gefunden.. und zwar mit folgenden code:

Form button1 = new Form2();
button1.Show();

das problem dabei ist.. es wird jedes mal das Form2 in einem neuen fenster geöffnet.. wie muss ich den code umschreiben, damit Form2 im selben fenster wie Form1 geöffnet wird?

danke


Christian S. - So 15.06.08 20:39

Hallo!

Ich würde nicht wirklich mehrere Forms erstellen, sondern ein TabControl nehmen und für jede neue "Version" Deiner Form eine neue TabPage anlegen. Wenn Du dann "weiter" klickst, wird nur die nächste Seite im TabControl angezeigt, anstatt immer wieder eine neue Form angezeigt.
Hm, ich finde gerade nicht mehr, wie das geht. Ich könnte schwören, das ging ... oder war das unter Delphi :gruebel:

Als Alternative könntest Du die verschiedenen Forms nicht als Form machen, sondern als UserControl, welche Du dynamisch in Deiner einzigen Form anzeigst.

Grüße
Christian


baggyownz - So 15.06.08 20:48

kannste mir davon ein bsp zeigen?

wie gesagt bei button weiter öffnet sich die nächste form.. das funktioniert alles richtig.. aber immer halt in einem neuen fenster.. und ich hätte dies gerne im selben fenster..


baggyownz - So 15.06.08 20:50

achso ich nutze übrigens ms visual studio 2008


JüTho - Mo 16.06.08 09:45

Warum sollen wir eigentlich Beispiel-Code schreiben, wenn er in der SDK-Doku immer zu finden ist? Ein UserControl wird in der Regel mit dem Designer erstellt und bei Bedarf in das vorhandene Formular eingebaut - ähnlich wie Du es in Deinem Anfangscode für Form2 gemacht hast (abgesehen davon, dass es Schwachsinn ist, einem Formular den Namen "button1" zu geben - entschuldige die harte Formulierung, aber wie soll ich es sonst nennen).

Eine Anleitung findest Du auch unter OpenBook Visual C# Kap.25 [http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_25_000.htm#Xxx999349]

@Christian
Die Lösung mit TabControl/TabPage funktioniert unter NET nicht so einfach, weil eine Eigenschaft TabVisible fehlt.

Jürgen

PS. Du kannst Deine Beiträge nachträglich ändern (auf die Schere klicken); zwei Beiträge innerhalb von 2 Minuten sind nicht nötig.


Christian S. - Mo 16.06.08 11:04

Hallo!

Das schöne ist, Du brauchst praktisch keinen Code dafür :-)

Du legst ein UserControl in Deinem Projekt genauso an wie eine Form (also über Add -> New Item). Bei einem UserControl kannst Du auch die Komponenten genauso platzieren wie bei einer Form.

Einbinden tust Du es ganz einfach, indem Du es erzeugst (blah = new MyUserControl) und Deine Form als Parent angibst. Vielleicht kann es sinnvoll sein, das UserControl eher in einem Panel oder so anzuzeigen. Musst Du ausprobieren.

Grüße
Christian

P.S.: @Jürgen: Stimmt, die Eigenschaft hab ich gesucht :-)
P.P.S.: @Jürgen: Man kann auch antworten, wenn etwas irgendwo schon steht. Sonst können wir das Forum irgendwann mit Hinweis auf die Doku schließen ;-)


SSC streezer - Mi 02.07.08 16:42

wie wärs mid "MDI" -> einfach im entsprehcenden fenster unter eigenschaften auf true sezten...


Christian S. - Mi 02.07.08 16:46

Er will nicht mehrere Fenster gleichzeitig sichtbar haben, sondern immer nur eines. MDI hilft da überhaupt nichts.