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
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"
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
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
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
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.
Anchor taugt nicht wirklich für irgendetwas.
Da muss ich widersprechen 😉
Wenn man mit Anchor richtig umgehen kann, ersetzt er viele "aufgeblähte" Layoutcontainer.
nehme immer das Tablelayoutpanel für ein grobes Raster und setze danach in die Zellen immer Controls mit Anchor -> die Mischung machts 😉
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.
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...
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.
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.
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.
Hallo Forumposter,
meines Erachtens ein Fall für TablelayoutPanel, das aber schon weiter oben mehrfach genannt wurde.
herbivore
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.
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).