Autor Beitrag
mannyk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.03.10 21:54 
Hallo, ich habe eine grundlegende Frage zu Windows Forms.

Ich möchte eine Applikation schreiben, die mehrere, unabhängige Formular-Seiten hat. Leider ist die Realisierung durch Panels nicht wirklich einfach (da es in Visual Studio meines Wissens keinen Befehl gibt, ein Panel auszublenden oder zwischen verschiedenen Panels zu navigieren).

Deshalb meine Frage: Wie kann ich ein mehrseitiges Formular am einfachstes erstellen?

Ich kenne sonst nur ein TabPane mit verschiedenen Tabs, was ich optisch aber nicht sehr schön finde.

Danke für eure Antworten,
mannyk
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mo 01.03.10 22:07 
Du erstellst dir einfach eine Array mit all einen Panels. Jedes Panel hat dann eine ID ( ArrayIndex/Seitennummer )
Die Panels haben natürlich die gleichen Dimensionen und Startpositionen (sonst wirds nicht gut ausschauen)
Seite 1 = Array[0]

hier mal ein mehr oder weniger Pseudocode zum aktivieren eines bestimmten Panels

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
int _currentPanelIndex = 0// private field

void ActivatePanel( int index )
{
    forint i = 0; i < array.Length; i++ )
         array[i].Visible = (i == index);
    _currentPanelIndex = index;

}


Der code setzt nun jedes Panel auf nicht sichtbar, und nur das eine was angezeigt wird soll auf sichtbar.
mannyk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.03.10 22:49 
Danke für den Tipp!

Allerdings finde ich das weitaus größere Problem, wenn ich mit den Panels die Oberfläche (zur Designzeit) designe.
Dafür muss ich alle nicht aktuellen Panels wegschieben, bis nur noch das aktuelle da ist, wenn ich dann wieder alle pixelgenau hinschieben muss, usw.

Ich habe das Problem also eigentlich nur beim Designen und nicht bei der Programmierung an sich.

Wenn ich dann die Panes aufs Pixel genau übereinander schiebe, wird dann zusätzlich beim Testen das Pane gar nicht mehr angezeigt, weil dieses auf einmal in ein anderes Pane verschachtelt wurde, was nicht sichtbar ist. Einen Kniff diese Verschachtelung rückgängig zu machen, habe ich bis jetzt noch nicht gefunden.

Ich denke, dass die Panes deshalb nicht dafür gemacht sind. Eine andere Möglichkeit wäre ein Tab Control zu nehmen und die Tabs mit einem anderen Control zu verbergen (weil ich die nicht haben will) und zwischen den verschiedenen TabPanes mit anderen Buttons zu navigieren - das wär dann aber schon fast ein Hack.

Deshalb suche ich nach wie vor nach einer eleganten Möglichkeit ein dynamisches Formular zu programmieren...

Danke und lg,
mannyk
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Di 02.03.10 00:55 
Erstell die Panels doch einfach im Code?
mannyk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Di 02.03.10 02:49 
Dann muss ich aber auch die ganzen controls dynamisch erstellen, anstatt sie im Designer zusammenzuklicken.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 02.03.10 09:41 
Nimm doch stattdessen UserControl: Diese können einzeln im Designer "zusammengeklickt" werden (dieser abwertende Begriff zeigt schon, wieviel Intelligenz Eigeninitiative vom Entwicker erwartet wird) und je nach Bedarf in das Formular eingebunden oder ausgeblendet werden. Jürgen
mannyk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 1



BeitragVerfasst: Di 09.03.10 21:08 
Danke, werde ich mir anschauen.

Mit Zusammenklicken, meine ich salopp einen GUI-Builder zu gebrauchen. Und da meines Erachtens VS einen der besten Builder hat, möchte ich diesen eben auch gerne verwenden.
LG