Autor |
Beitrag |
KanneM
      
Beiträge: 26
Erhaltene Danke: 1
Win98, Win XP, Win 7
Java, C#
|
Verfasst: Do 14.06.12 08:36
Liebe Community,
ich möchte jetzt langsam von der einfachen Forms-Gestaltung wegkommen und habe mir mal ein paar Programme angeschaut. Fast alle davon behalten bei Interaktionen die Hauptform. Ich habe bis jetzt jedesmal wenn ich eine neue Maske gebraucht habe eine neue WinForm geladen... Ist aber nicht gerade eine schöne Lösung, müsste ich ein MenuStrip z.B. jedesmal wieder neu implementieren.
Ich möchte also eine Subform, die ich wechseln kann, in einer Hauptform.
Ich habe aufgeschnappt, dass man sowas Formular nennt. Jetzt ist also die Frage, wie ich so ein Formular erstelle...
(Zur Erklärung: In der Hauptmaske also z.B. ein Formular "User hinzufügen", das angezeigt wird wenn ich im MenuStrip eine Option wähle, und nach erfolgreichen hinzufügen ein Formular, das alle Benutzer anzeigt.)
In der Toolbox von VS habe ich schon geschaut, aber nichts gefunden, was mir so ausgesehen hätte...
Danke schonmal im Vorraus und lG
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 14.06.12 08:51
Hallo!
"Formular" ist eigentlich nur ein anderer Name für das (gesamte) Fenster.
Was Du suchst, ist ein UserControl. Das erstellst Du, indem Du im Projekt Explorer mal mit der rechten Maustaste auf Dein Projekt klickst, dort auf "Hinzufügen" und dann "Benutzersteuerelement".
Was Du dann machst ist im wesentlichen, dass Du eine eigene Komponente schreibst, welche Du dann hinterher (IIRC nach einmaligen Kompilieren des Projektes) wie alle anderen Komponenten in der Toolbox findest. Wie alle anderen Komponenten kannst Du sie aber auch dynamisch im Code erstellen und das ist ja genau das, was Du machen möchtest: Wenn jemand auf den Menüpunkt "User hinzufügen" klickt, erstellst Du ein UserControl, welches die Eingabemaske dafür enthält und zeigst es in Deiner Form an.
Ein bisschen kniffligen beim Einstieg ist die Kommunikation des UserControl mit der Form. Das UserControl ist ja eine eigene Klasse und hat somit keinen Zugriff auf die privaten Felder Deiner Form, wie Du es von Deinem bisherigen Code wahrscheinlich gewohnt bist. Du kannst wirst daher dem UserControl Eigenschaften geben müssen, welche Du von der Form aus setzen oder lesen kannst (also z.B. eine Eigenschaft "Username", welche den eingegebenen Benutzernamen enthält).
Viele Grüße,
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: KanneM
|
|
KanneM 
      
Beiträge: 26
Erhaltene Danke: 1
Win98, Win XP, Win 7
Java, C#
|
Verfasst: Do 14.06.12 08:55
Das klingt doch bis jetzt schonmal ganz gut, ich werds (wenn ichs schaff) heute Abend mal ausprobieren und melde mich dann nochmal
Danke bis hierher 
|
|
KanneM 
      
Beiträge: 26
Erhaltene Danke: 1
Win98, Win XP, Win 7
Java, C#
|
Verfasst: Fr 15.06.12 08:59
Also, ich habe es ausprobiert - und es funktioniert ganz wunderbar! Danke!
Jetzt stellt sich mir allerdings die Frage, wie ich aktionsgebunden ein anderes Benutzersteuerelement anzeigen lassen kann. Ich nehme an ich muss erst alle Bse. deklarieren & initialisieren, und dann mit Show() und Hide() die einzelnen Masken bearbeiten, oder?
LG,
Kanne
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 15.06.12 10:53
Hi!
Ich würde im Code jeweils das Steuerelement erstellen, welches Du gerade brauchst. Kannst Du ja instanzieren wie jede andere Klasse auch. Durch Setzen der Parent-Eigenschaft des Steuerlementes bestimmst Du, wo es angezeigt werden soll - also z.B. auf Deiner Form.
Grüße,
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
KanneM 
      
Beiträge: 26
Erhaltene Danke: 1
Win98, Win XP, Win 7
Java, C#
|
Verfasst: Fr 15.06.12 21:47
Ok soweit, mir ist aber immernochnicht so ganz klar, wie das mit parent funktionieren soll. Ich habe mal weng rumprobiert und gelesen, aber so wirklich komme ich nicht drauf.
Sagen wir, ich habe ein Benutzersteuerelement, das gerade angezeigt wird und will jetzt auf ein anderes Bse. wechseln. Welchen Code brauche ich dafür? (Und am Besten noch: Was passiert dabei?)
LG
|
|
|