Laden...

Wie baue ich eine Anwendung mit mehreren Menüpunkten am besten auf?

Erstellt von below vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.492 Views
B
below Themenstarter:in
114 Beiträge seit 2007
vor 16 Jahren
Wie baue ich eine Anwendung mit mehreren Menüpunkten am besten auf?

Hallo,

ich hoffe ich kann einigermaßen rüberbringen wo mein Problem liegt.
Ich habe eine Anwendung mit Hauptmenü und Inhaltsbereich. Je nach Hauptmenüpunkt ändert sich der angezeigte Inhaltsbereich.

Mir fehlt im Moment noch das prinzipielle Verständnis zum Aufbau solcher Anwendungen. Ich habe jetzt ein Formular gebaut in dem das Hauptmenü angezeigt wird. Muss bzw. sollte jetzt der Contentbereich für jeden Menüpunkt in einem extra Formular erstellt werden?

Bei Webanwendungen würde ich einfach ein div basteln und dynamisch den Inhalt reinladen. Wenn ich aus Form1 nen neues Form öffne merkt der User ja, dass ein neues Formular geladen wurde. Dies soll ja gerade nicht der Fall sein. Es soll sich ja so anfühlen, als ob sich nur der Contentbereich aus dem Hauptformular ändert.

Leider mangelt es mir an Beispielprogrammen. Ich hab jede Menge Bücher hier rumfliegen wo alle Eigenschaften etc. bis ins kleinste Detail beleuchtet werden. Viel mehr würde mir aber ein Beispiel bringen, an dem einmal erläutert wird, wie eine Anwendung aufgebaut wird, die aus mehreren Bereichen besteht, wie diese geladen werden sollten etc.

Ich hoffe Ihr versteht so einigermaßen was ich meine 🙂

Viele Grüße

below

P
56 Beiträge seit 2006
vor 16 Jahren

Wie ich das machen würde:

Für jede Funktion (= angezeigtes Element im Inhaltsbereich) würde ich eine extra Benutzersteuerelement mit den entsprechenden Elementen anlegen.
Dazu dann so eine Funktion, die in den Hauptmenübutton-click-events aufgerufen wird:

Die einzelnen Bunutzersteuerelemente mit den Funktionen würde ich einfach auf der Form plazieren.

enum Functionlist
{
  Begruessung,
  Taschenrechner,
  Kalender
}

private void ShowFunction(Functionlist f)
{
  if(f == Functionlist.Begruessung)
  {
    CorrectBorders(Begruessung1);
    this.Controls.Add(Begruessung1);
  }
  else
     this.Controls.Remove(Begruessung1);
  // ......
}

private void CorrectBorders(Control C)
{
  // Manuelle Positionierung, da im Designer etwas schwierig
  C.Location = new Point(50,50);
  C.Size = new Size(200,200);
  //C.Anchor = .....
}

49.485 Beiträge seit 2005
vor 16 Jahren
B
below Themenstarter:in
114 Beiträge seit 2007
vor 16 Jahren

Vielen Dank euch beiden.
Werde mich mal an die Umsetzung mit UserControls begeben. Glaube das ist genau das was ich gesucht habe.

B
below Themenstarter:in
114 Beiträge seit 2007
vor 16 Jahren

Ich hab gerade gesehen, dass man durch die Eigenschaft toplevel ja auch ein Form in eine Panel eines anderen Forms integrieren kann. Das macht alles ja noch viel einfacher.

Vielen Dank für die Hilfe!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo below,

einfacher vielleicht, aber machen solltest du es nicht so. Das ist ein "Missbrauch" dieser Eigenschaft. UserControls sind so gesehen schon besser.

herbivore

B
below Themenstarter:in
114 Beiträge seit 2007
vor 16 Jahren

Hmm, kannst Du mir das nochmal etwas erläutern, warum das als Missbrauch angesehen wird?

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo below,

TopLevel ist für Mdi-Konstruktionen relevant, nicht für Inhaltsbereiche. Für Inhaltsbereiche sind Panels und UserControls. Der Wunsch, Forms für Inhaltsbereiche einzusetzen, resultiert aus einer Schwäche des Designers Inhaltsbereiche nicht so gut zu unterstützen. Deshalb sollte man sich nicht dazu verleiten lassen Forms für Inhaltsbereiche zu "missbrauchen".

herbivore

B
below Themenstarter:in
114 Beiträge seit 2007
vor 16 Jahren

Hm, ok, leuchtet ein. Vom Aufwand her ist es ja eigentlich auch egal, ob man ein UserControl oder ein Form nimmt. Ich wollte zuerst alle Element zur laufzeit generieren und dann in das Form laden. Blöd daran ist eben, dass man das Programm jedes Mal ausführen muss um die Änderungen zu sehen. Insofern sind UserControls die man mit dem Designer entwerfen kann ja eine schöne Angelegenheit.

Die Umstellung vom Entwickeln von Webanwendungen auf C# fällt halt noch ein bißchen schwer.

F
10.010 Beiträge seit 2004
vor 16 Jahren

Dann mach es doch gleich richtig 😉

http://www.codeplex.com/smartclient