Forum: PC-Programmierung C#: Form1 für unterschiedliche Auflösungen anpassen


von Florian W. (flo30006)


Lesenswert?

Hallo,
Habe mithilfe von C# eine graphische Oberfläche und ein kleines Programm 
programmiert. Da ich eine AUflösung von 1600:900 habe, habe ich alles 
für diese Auflösung programmiert.
Nun hab ich aber auf meinem 2t PC ne kleiner Auflösung und das Fenster 
steht nun rechts aus meinem Bildschirm raus.

Weis zufällig jemand wie ich das Programmtechnisch so machen kann das es 
überall passt?

mfg
florian

von Sharping (Gast)


Lesenswert?

Was für ein Fensterframework benutzt du denn?

von Florian W. (flo30006)


Lesenswert?

Also ich benutze Microsoft Visual C# 2010 und hab ne 
Windows-Forms-Anwendung erstellt wenn du das meinst

mfg

von Sharping (Gast)


Lesenswert?

OK, also Winforms und nicht WPF.

Eigentlich ist die Sache ganz einfach: mache deine Form skalierbar, 
indem du im Designer den FormBorderStype auf Sizable stellst (sollte per 
default schon so sein). Nun kannst du das fenster belibig skalieren.

Vermutlich machen nun aber deine Controls noch nicht so richtig mit, da 
diese fiy positioniert sind. Hier helfen Container (Flow Layout Panel, 
SplitContainer, tableLayoutPanel etc.). Zusätzlich solltest du die Dock 
und Anchor Eigenschaften deiner Controls richtig einstellen.

Wenn du damit durch bist sollten sich alle Controls beim Skalieren der 
Form korrekt anpassen.

von Florian W. (flo30006)


Lesenswert?

Okay versuch ich mal, danke dir, hast du vl gute Links wo das 
verständlich erklärt ist?

mfg

von Florian W. (flo30006)


Lesenswert?

Edit:
Ja es ist auf Sizeable, aber trotzdem ist es bei mir am Bildschirm viel 
zu groß und steht über den Rand hinaus....

von Sharping (Gast)


Lesenswert?

Mh, leider nicht. Auf die schnelle finde ich auch kein Tutorial zu dem 
Thema.

Wenn du magst kannst ja mal einen Screenshot von deiner Form posten, 
dann kann ich dir ein paar Tipps geben...

von Florian W. (flo30006)


Lesenswert?

Jop einen Moment, hier Posten oder dir direkt schicken?

von Peter II (Gast)


Lesenswert?

das Problem wird wohl die default größe sein (Die von Designer). 
Entweder das Form erstmal kleiner machen oder wenn es immer 
bildschirmfüllend sein soll einfach die Auflösung abfragen und Size 
passend setzen.

von Sharping (Gast)


Lesenswert?

Florian W. schrieb:
> Edit:
> Ja es ist auf Sizeable, aber trotzdem ist es bei mir am Bildschirm viel
> zu groß und steht über den Rand hinaus....

Die Form hat zunächst mal die Größe, die du im Designer verwendet hast. 
Wenn du das umgehen willst kannst du z.B. den WindowState auf maximized 
stellen.
Beim Start passt sich die Form dann in den Bildschirm ein.

von Florian W. (flo30006)


Angehängte Dateien:

Lesenswert?

So Bild1 zeigt Mein Form1 nach dem Starten, Bild2 wenn ich den 
Maximieren-Button verwende!
Bei meinem anderen PC( Auflösung 1600:900) ist recht und unten der 
gleiche Abstand bei den DIagrammen

von Sharping (Gast)


Lesenswert?

OK, da bietet sich wohl ein TableLayoutPanel mit 4 Zellen (zwei Zeilen 
und zwei Spalten an). Das ziehst du schön groß und setzt die Anchor 
Property auf alle vier Seiten.

In jede Zelle packst du dann eins deiner Diagramme. Hier verwendest du 
den DockStyle Fill, so dass das Diagramm die zelle ausfüllt.

Zusätzlich kannst du noch Abstände im TableLayoutPanel definieren, so 
dass es nicht ganz so gedrungen aussieht.

Den Button in der Mitte würde ich rausnehmen, und z.B. unten rechts 
platzieren (Buttons in der Mitte sind auch eher unüblich ;-)
Hier kannst du dann das Anchoring von TopLeft auf BottomRight umstellen, 
so dass der Button auch immer schön unten rechts bleibt.

Ist jetzt nur mal so ein grober Vorschlag, damit du siehst in welche 
Richtung sowas geht ;-)

von Sharping (Gast)


Lesenswert?

PS: Das ganze setzt natürlich voraus, dass dein Diagramm-Control 
skalierbar ist. Ist es doch, oder???

von Florian W. (flo30006)


Lesenswert?

Okay danke dir, der Button ist eh nur zu Test-Zwecken gedacht, der kommt 
dann eh weg!

von Florian W. (flo30006)


Lesenswert?

Phu muss ich gleich schauen, ich verwende ZedGraph wenn dir das was 
sagt.

von Sharping (Gast)


Angehängte Dateien:

Lesenswert?

Leider nicht, wird aber vermutlich passen.

Ein Hinweis noch: Oben habe ich mich vertan. Den Abstand zwischen den 
Zellen des TableLayoutPanels bekommst du über die Margin-Eigenschaft der 
Objekte in den Zellen (also deiner Graphen).

Das ganze sollte dann in etwa so wie im Bild aussehen.

von Florian W. (flo30006)


Lesenswert?

Noch eine Frage:
Kann ich die Form1 dann im Code über:
this.Size = new Size(); irgendwie auf Maximum stellen?
Bis jetzt steht da immer (1600,900) drinnen.

von Peter II (Gast)


Lesenswert?

Florian W. schrieb:
> this.Size = new Size(); irgendwie auf Maximum stellen?

dafür gibt es eine Maximize als eigenschaft.

von Florian W. (flo30006)


Lesenswert?

Danke dir, hab zwar Form1 noch auf 1600;900 gesetzt aber er passt es nun 
trotzdem an meinen Bildschirm an.

Danke dir

von Florian W. (flo30006)


Lesenswert?

Ähm kann ich mir jetzt auch eines dieser Diagramme wieder rausholen und 
das dann per Button ( Menüleiste ) über den ganzen Bildschirm anzeigen?

von Sharping (Gast)


Lesenswert?

Auch das ist kein Problem :-)
Zugriff auf das Control hast du ja, denn das ist einfach nur ein Member 
deiner Form (Name wird ja über den Designer vergeben).
Im Prinzip kannst du damit anstellen was du willst (z.B. aus dem 
Table-Panel entfernen und sonst wo platzieren).

Wie du das jetzt am geschicktesten machst musst du natürlich selber 
wissen (du könntest z.B. auch ein neues Fenster aufmachen, eine Tab view 
verwenden oder sonst was). Am besten überlegst du mal wie andere 
Programme, die deinem ähnlich sind sowas von der Bedienung her gelöst 
haben...

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.