Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Mehrere Panels, die ineinander liegen, voneinander unabhängig machen
arthur_8200
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

[erledigt] Mehrere Panels, die ineinander liegen, voneinander unabhängig machen

beantworten | zitieren | melden

Hallo,

ich möchte bei einer C# Windows Forms Anwendung mit mehreren Panels arbeiten die unabhängig voneinander sind.

Die Panels sollen also jeweils direkt in der form1 liegen und sind alle mit dem Dock-Modus "Fill" eingesellt. D.h. die Panels füllen die ganze Form1 aus. Die Panels sollten also in voller Größe unabhängig voneinander übereinander liegen. Je nachdem was der Benutzer anklickt wird dann ein Panel visible und alle anderen invisible.

Im Visual Studio kann ich zwischen den Panels wechseln indem ich das aktuelle Panel "in den Hintergrund" versetze. Damit erscheint das nächste Panel usw.

Leider habe ich eines der Panel in einem anderen Panel angelegt. Ich weiß aber nicht wie ich das umstellen kann.
Im Designer.cs sieht man es vom Code her ganz deutlich:

this.panel_eingabe.Controls.Add(this.panel_leer);

Wie kann ich also das Panel leer direkt in der Form anstatt in dem Panel eingabe anlegen?


Vielen Dank!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von arthur_8200 am .
MfG,
Arthur
private Nachricht | Beiträge des Benutzers
c#-Hacker
myCSharp.de - Member

Avatar #avatar-3426.gif


Dabei seit:
Beiträge: 12

beantworten | zitieren | melden

Hallo artuhr_8200, du kannst einfach this.panel_eingabe.Controls.Add(this.panel_leer); durch this.Controls.Add(this.panel_leer); ersetzen. Dann ist dein Panel direkt in deinem Form. c#-Hacker
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von c#-Hacker am .
private Nachricht | Beiträge des Benutzers
arthur_8200
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Hey C#-Hacker,

vielen Dank für deinen Tipp!


Ich fürchte deine Lösung ist aber nicht ganz sauber... denn im Designer-Quellcode steht

#region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
MfG,
Arthur
private Nachricht | Beiträge des Benutzers
Somakia
myCSharp.de - Member



Dabei seit:
Beiträge: 269
Herkunft: Hessen

beantworten | zitieren | melden

Das ist nur ein Hinweis...

man kann (und darf) in der .Designer.cs schon Änderungen vornehmen, sollte sich aber darüber im Klaren sein, welches Ergebnis eine Aktion hat... mitunter meckert sonst der Designer rum, dass er die Form nicht mehr darstellen kann ;) (oder sie funktioniert gar nicht mehr... je nach gemachtem Fehler)
In diesem Fall sollte das aber keinen unterschied machen, du änderst ja nur den "Parent Container" (wenn man so will ^^)

P.S.:
Der Designer soll den Anwender nur bei der Entwicklung unterstützen.
Man muss ihn nicht zwingend nutzen.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Somakia am .
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

beantworten | zitieren | melden

Du kannst das ganze auch über das DocumentOutline Fenster im Designer machen ohne den Code zu verändern wenn du dich damit sicherer fühlst :)
private Nachricht | Beiträge des Benutzers
telfa
myCSharp.de - Member



Dabei seit:
Beiträge: 156
Herkunft: Rheinbach

beantworten | zitieren | melden

Hallo Arthur_8200,

wenn Du zur Laufzeit mehrere Panels übereinander plazieren willst, von denen immer nur eines sichtbar ist, kannst Du auch im Designer nur ein Panel anlegen und beim Start per QuellCode mehrere Kopien erzeugen. In einer Schleife legst Du wie im .Designer.cs mehrere Panel an der gleichen Position an.
Die Benamung der Panel sollte dabei aber eindeutig sein.

Viele Grüße,
telfa
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo arthur_8200,

die Lösung ist sauber, wenn der geänderte Code mit Code übereinstimmt, der genauso gut vom Designer generiert sein könnte. Mit anderen Worten: Ob du eine Einstellung im Designer änderst oder ob du den Code so änderst, wie ihn der Designer generieren würde, wenn die Einstellung geändert wäre, ist vom Ergebnis her vollkommen egal. Wenn man direkt den Code ändert, sollte man halt genau wissen, was man tut und was man tun muss.

Wenn du mit dem Designer arbeitest, wären UserControls vermutlich ohnehin besser geeignet als Panels, siehe [FAQ] Assistenten/Wizards: Mit Windows Forms eine Art Frameset einer Website nachbauen.

herbivore
private Nachricht | Beiträge des Benutzers
arthur_8200
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Hallo nochmal an alle,

vielen Dank für eure zahlreichen Kommentare!

Haben mir sehr geholfen
MfG,
Arthur
private Nachricht | Beiträge des Benutzers