Forum: PC-Programmierung c#: dynamische Oberfläche (GUI)


von chris (Gast)


Lesenswert?

Hi,
ich bin dabei ein Programm zu schreiben welches unterschiedliche Geräte 
(an der selben Schnittstelle) ansprechen kann.

Da nun die Geräte und auch die Daten unterschiedlich sind, suche ich 
nach einer Lösung alles zusammen auf meiner Programmoberfläche 
unterbringen zu können.

Schön wäre jetzt eine dynamische GUI die je nach ausgewähltem Gerät 
entweder die eine oder die andere Oberfläche anzeigt, also 
unterschiedliche Buttons, texBoxen, Checkboxen...

Gibt es eine Möglichkeit das im Visual Studio entsprechend zu gestalten 
dass immer nur eine "Elementegruppe" angezeigt wird und der rest 
ausblendbar ist!?

Wie kann man sowas realisieren!? bin um jeden Tipp und Anregung dankbar!

von Peter II (Gast)


Lesenswert?

chris schrieb:
> Gibt es eine Möglichkeit das im Visual Studio entsprechend zu gestalten
> dass immer nur eine "Elementegruppe" angezeigt wird und der rest
> ausblendbar ist!?

einfach mal SUCHEN - das thema kommt eimal im Monat vor.

von chris (Gast)


Lesenswert?

Nachtrag:
ich könnte das z.B. auch über tabs lösen (TabControl), aber ich möchte 
nicht dass die anderen (nicht benötigten) Elemente sichtbar sind.

von Sharping (Gast)


Lesenswert?

Stichwort: "UserControl"

von norman (Gast)


Lesenswert?

Hallo,

quick and dirty:

Die Elemente alle auf Panels legen.
Dann alle Panels übereinanderlegen.
Anschließend mit Panel1.Show, Panel2.Hide usw. die Panels ein- und 
ausblenden.


MfG

von chris (Gast)


Lesenswert?

danke, ich glaube UserControl ist der richtige Ansatz.

Die Sache mit show und hide habe ich mir auch überlegt, aber ich möchte 
es eigentlich nicht Q'nD, ausserdem verliert man dann im Form Designer 
spätestens beim vierten Element den Überblick =(

von Peter II (Gast)


Lesenswert?

chris schrieb:
> danke, ich glaube UserControl ist der richtige Ansatz.

eigentlich nicht. Man kenn jeden controll einfach mit ADD auf dem 
Form/Panel hinzufügen. wozu man da ein Usercontrol braucht ist mir nicht 
klar.

Hast du denn überhaupt mal in die Gernerierten c# Dateien geschaut? Dann 
müsste dir aufgefallen sein, das alle Controls dynmamisch hinzugefügt 
werden und zwar im contructor vom Form.

von Sharping (Gast)


Lesenswert?

Peter II schrieb:
> eigentlich nicht. Man kenn jeden controll einfach mit ADD auf dem
> Form/Panel hinzufügen. wozu man da ein Usercontrol braucht ist mir nicht
> klar.

Dann lass es lieber mit dem Ratschläge erteilen. Ein UserControl IST der 
richtige Ansatz.
Du willst wirklich die komplette GUI per Code aufbauen? Obwohl Visual 
Studio dir einen sehr komfortablen Designer zur Verfügung stellt? Das 
ist definitiv der falsche Weg.

von Peter II (Gast)


Lesenswert?

Sharping schrieb:
> Dann lass es lieber mit dem Ratschläge erteilen. Ein UserControl IST der
> richtige Ansatz.
> Du willst wirklich die komplette GUI per Code aufbauen? Obwohl Visual
> Studio dir einen sehr komfortablen Designer zur Verfügung stellt? Das
> ist definitiv der falsche Weg.

ja, genau das versteht ich unter dynamisch. Alles ander ist FIX auch 
wenn nicht sichtbar.

von Arc N. (arc)


Lesenswert?

chris schrieb:
> Nachtrag:
> ich könnte das z.B. auch über tabs lösen (TabControl), aber ich möchte
> nicht dass die anderen (nicht benötigten) Elemente sichtbar sind.

TabPages.Remove
TabPages.Add
http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.tabpagecollection_methods(v=vs.80)

von Sharping (Gast)


Lesenswert?

Dann lies dir nochmal die Frage des Threadstarters durch: er hat n 
Geräte, und für jedes möächte er eine andere GUI anzeigen. D.h. die GUIs 
selber sind fix, er muss nur dynamisch auswählen welche angezeigt werden 
soll.

Es bietet sich also an, für jedes Gerät ein UserControl zu entwerfen. 
Die Anwendung hat dann ein Panel, in dem je nach ausgewähltem Gerät das 
entsprechende UserControl angezeigt wird.

von Sebastian__ (Gast)


Lesenswert?

Wenn du das mit WPF machen willst, geht das sehr bequem wenn du listen 
ber Binding Visualisieren willst, jedes Element bekommt das per Template 
seine Oberfläche.
Es wird so gut wie kein Code benötigt und das ganze lässt sich auch 
recht ansehnlich gestalten.
In wie weit das auch mit Windows Forms geht kann ich nicht sagen.

Sebastian

von chris (Gast)


Lesenswert?

um nochmal klar zu stellen was ich benötige, Sharping hat es durchaus 
richtig erkannt:

Ich habe eine bestimmte Anzahl an Geräten. Jedes Gerät benötigt eine 
andere (aber fest definierte) Programmoberfläche was die Anzahl und 
Position von unterschiedlichen Elementen angeht.

Mit der UserControl kann ich für jedes Gerät eine Eingabe- und 
Datenanzeigemaske erstellen welche ich dann in meiner form anzeige.

UserControl ist genau DAS, wonach ich gesucht habe, ich kannte es jedoch 
noch nicht!

Das dynamische erstellen von einzelnen textboxen, labels, buttons und 
Checkboxen ist mir durchaus vertraut. bei dem Programmumfang den ich 
hier aber habe, wäre das ein unding alles einzeln von Hand zu erstellen.

VS bietet hier mit UserControl eine deutlich elegantere Lösung im 
Formdesigner an!

Danke!

von Sebastian-L (Gast)


Lesenswert?

Hi,
Hätte da mal n paar fragen dazu.
Wie wird entschieden welche gui angezeigt wird? Bleibt die logik gleich? 
Wie schnell wechsln die geräte? Wie viele gleichzeitig?
Evtl wär MDI ja was oder falls nur zum programmstart gewählt wird ein 
simpler komandozeilen parameter

von Frank M. (aktenasche)


Lesenswert?

äähhh wie wärs mit einer form pro gerät?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.