Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Windows Form und Steuerelemente vergrößern
NeueWelt
myCSharp.de - Member



Dabei seit:
Beiträge: 56
Herkunft: Bayern

Themenstarter:

Windows Form und Steuerelemente vergrößern

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
ProGamer
myCSharp.de - Member



Dabei seit:
Beiträge: 691
Herkunft: NRW

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3778
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
NeueWelt
myCSharp.de - Member



Dabei seit:
Beiträge: 56
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
wcseller
myCSharp.de - Member



Dabei seit:
Beiträge: 191

beantworten | zitieren | melden

Zitat von NeueWelt
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
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 6155
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von ErfinderDesRades
Anchor taugt nicht wirklich für irgendetwas.
Da muss ich widersprechen
Wenn man mit Anchor richtig umgehen kann, ersetzt er viele "aufgeblähte" Layoutcontainer.
private Nachricht | Beiträge des Benutzers
rasepretrep
myCSharp.de - Member



Dabei seit:
Beiträge: 105

beantworten | zitieren | melden

nehme immer das Tablelayoutpanel für ein grobes Raster und setze danach in die Zellen immer Controls mit Anchor -> die Mischung machts ;-)
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
rasepretrep
myCSharp.de - Member



Dabei seit:
Beiträge: 105

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Zitat
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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Forumposter
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Forumposter am .
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Zitat von ErfinderDesRades
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Forumposter,

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

herbivore
private Nachricht | Beiträge des Benutzers
Forumposter
myCSharp.de - Member



Dabei seit:
Beiträge: 3

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4140

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers