Laden...

Windows Form und Steuerelemente vergrößern

Erstellt von NeueWelt vor 12 Jahren Letzter Beitrag vor 12 Jahren 12.417 Views
N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 12 Jahren
Windows Form und Steuerelemente vergrößern

Hallo,

Ich habe eine windows form anwendung mit mehreren Forms und vielen Steuerelementen(buttons,labels usw.).
Auf Bildschirm größe von 17 zoll.

jetzt sollen die forms größer werden, gibt es eine möglichkeit mit der sich die Steuerelement dann automatisch anpassen, oder muss ich jedes einzelne element manuell vergrößern?

mfg

P
660 Beiträge seit 2008
vor 12 Jahren

Du kannst bei den Controls die Anchor-Property auf alle vier seiten setzen. (entweder über den Designer oder im Code durch verknüpfen mit dem oder Operator)
bei der vergößerung oder verkleinerung der Form passt sich die größe dann automatisch an.

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

3.825 Beiträge seit 2006
vor 12 Jahren

Leider musst Du jeden Control einzeln vergrößern.

Ich habe dazu eine Funktion geschrieben, die mir jedes WinForm vergrößert, da kommt dann so ein Code raus :


private void FormRescale()
{
	double scale = Parameter.Scale;
	string font = ...
	this.SuspendLayout();
	this.Font = new Font(font, (float)(11 * scale), FontStyle.Regular, GraphicsUnit.Pixel, 0);
	this.ClientSize = new Size((int)(scale*792), (int)(scale*567));
	mnuBelege.Font = new Font(font, (float)(11 * scale), FontStyle.Regular, GraphicsUnit.Pixel, 0);
	mnuBelege.Location = new Point((int)(scale*0), (int)(scale*0));
	mnuBelege.Size = new Size((int)(scale*792) + ofx, (int)(scale*24));
	tlbBelege.Font = new Font(font, (float)(11 * scale2), FontStyle.Regular, GraphicsUnit.Pixel, 0);
        ...
}

In WPF geht das leichter !

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 12 Jahren

danke für die Antworten

habe Anchor ausprobiert da bleiben die randabstände gleich und das Control vergrößert sich, das ist richtig, aber wenn ich z.b. einen Button habe unten rechts dann wird der wenn ich form vergrößer auch riesen groß.

Also werd ich das dann wohl einzeln vergrößern.

mfg

mfg

W
196 Beiträge seit 2008
vor 12 Jahren

aber wenn ich z.b. einen Button habe unten rechts dann wird der wenn ich form vergrößer auch riesen groß

Schau Dir die Anchor-Eigenschaft nochmal genauer an. Für Deinen Button müsstest Du das Anchoring unten und rechts setzen - dann bleibt der Button unten rechts in Position, OHNE sich zu vergrößern.

Gruß,

wcseller

5.299 Beiträge seit 2008
vor 12 Jahren

Anchor taugt nicht wirklich für irgendetwas.

Man muß sich bisserl mit ContainerControls beschäftigen: Panel, Groupbox, SplitContainer, TableLayoutPanel.

In diese Container kann man seine Controls plazieren, und ihr Größen-Anpassungs-Verhalten über die Dock-Property steuern.

machma ein Splitcontainer, .Dock.Fill aufs Form, mit FixedPanel=Panel1.
In panel2 3 Richtextboxen, die erste .Dock.Top, die zweite .Dock.Bottom, die dritte .Dock.Fill

So in der Art geht das eiglich ziemlich wunnebar.

Der frühe Apfel fängt den Wurm.

5.742 Beiträge seit 2007
vor 12 Jahren

Anchor taugt nicht wirklich für irgendetwas.

Da muss ich widersprechen 😉
Wenn man mit Anchor richtig umgehen kann, ersetzt er viele "aufgeblähte" Layoutcontainer.

R
103 Beiträge seit 2009
vor 12 Jahren

nehme immer das Tablelayoutpanel für ein grobes Raster und setze danach in die Zellen immer Controls mit Anchor -> die Mischung machts 😉

5.299 Beiträge seit 2008
vor 12 Jahren

Naja, ich bin immer mittm SplitContainer unterwegs. Den kann Anchoring garnicht ersetzen.
Und mit Labels beschriftete Einzelwerte landen in einem 2-spaltigen TablelayoutPanel, dessen erste Spalte fix ist, die zweite kann wachsen.

Der frühe Apfel fängt den Wurm.

R
103 Beiträge seit 2009
vor 12 Jahren

Hmm der SpiltContainer ist doch eigentlich fürs resizen durch den user gedacht, oder?
Ein Kollege von mir hatte letztens mal ein Control mit 3 ineinander verschachtelten Splitcontainern. <rofl> - Da wäre das Tablelayoutpanel auf jeden Fall besser gewesen...

5.299 Beiträge seit 2008
vor 12 Jahren

Hmm der SpiltContainer ist doch eigentlich fürs resizen durch den user gedacht, oder? Jaklar.
Resizen durch den user gehört für mich zu den Basic-Ansprüchen an jede Oberfläche.

Ob das mit dem 3 Splitcontainern Quatsch ist, hängt vom Inhalt ab.
Gelegentlich mache ich das auch, zb wenn 3 MultiLine-Textboxen mit viel Inhalt im selben View anzuzeigen sind - da soll der User doch entscheiden können, wo er hineinschreibt, und diese Textbox ziehter sich natürlich groß.

guge etwa RegexTester

Der frühe Apfel fängt den Wurm.

F
3 Beiträge seit 2012
vor 12 Jahren

Ich möchte mich hier mal einklinken, da ich ein ähnliches Problem habe.
Und zwar habe ich eine Form mit zwei nebeneinander befindlichen, gleichgroßen Listboxen und unten rechts noch 2 Buttons. Optimalerweise würde ich ohne tricksen das ganze mit Anchor lösen, aber bisher hat's nur graue Haare verursacht.

Ziel: Ich möchte die Form vergrößern, so dass die beiden Listboxen ebenfalls im gleichen Maße vergrößert werden, also beide in X und Y Richtung vergrößert werden und weiterhin gleich groß sind und den Abstand beibehalten.

Das mit den Buttons ging relativ einfach. Die habe ich mit Buttom, Right geanchort und die verhalten sich richtig. Probleme bereiten mir aber die Listboxen.
Wenn ich beide an alle vier Seiten anchor, dann verhalten sie sich richtig, so wie es am Ende sein soll, aber sie überlappen irgendwann. Genauer gesagt überlappt die linke irgendwann die rechte. Also habe ich mir gedacht, ich löse den linken Anchor der rechten Listbox, damit die weggeschoben wird. Das funktioniert gut, aber nun kommt das Problem, dass die rechte nicht mehr vergrößert wird, sondern eine fixe Größe behält, während die linke Listbox das tut was sie soll.

//edit: Kurzes Update: Mit dem Splitcontainer klappt es einigermaßen. Aber durch das Fill ist kein Platz mehr für die Buttons oder für sonst was.
//edit2: Fill raus und Anchor des Splitcontainers auf alle 4 hat das Problem gelöst. Falls ihr dennoch eine Möglichkeit ohne den Umweg über den Splitcontainer habt, dann wäre ich euch dankbar.

5.299 Beiträge seit 2008
vor 12 Jahren

Anchor taugt nicht wirklich für irgendetwas.

Einfach ab der Stelle nochmal lesen.

Ich bin nämlich nachwievor dieser Ansicht, und vlt. kommst du auch dazu.

Der frühe Apfel fängt den Wurm.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Forumposter,

meines Erachtens ein Fall für TablelayoutPanel, das aber schon weiter oben mehrfach genannt wurde.

herbivore

F
3 Beiträge seit 2012
vor 12 Jahren

Danke für die Antworten. Ich habe das Problem so halb gelöst.
Das Problem was ich derzeit noch beim TableLayout habe, obwohl ich damit soweit zufrieden bin, kann man scheinbar nur ein Element pro Zeile/Spalte einfügen. Also für jeden Button brauche ich scheinbar eine eigene Spalte/Zeile, was das Layouten dann doch etwas verkompliziert. Aber ich denke ich bekomme das hin.

4.938 Beiträge seit 2008
vor 12 Jahren

Hallo,

beim TableLayoutPanel kannst du auch mehrere Controls pro Zelle eintragen, in dem du bspw. ein Panel benutzt und dort drauf die anderen Controls platzierst (und dann nur das Panel dem TableLayoutPanel hinzufügst).