Form.Minimumsize dynamisch setzen

second.name

Lieutenant
🎅Rätsel-Elite ’24
Registriert
Sep. 2009
Beiträge
718
Hallo Forum,

kurze Frage, welche von euch sicher schnell beantwortet ist...

Was muss ich machen, damit beim ändern der Form-Größe, das Form nur so klein werden darf, bis das rot eingerahmte UserControl seine MinimumSize erreicht?

Danke!
 

Anhänge

  • #1.jpg
    #1.jpg
    46,8 KB · Aufrufe: 161
  • #2.jpg
    #2.jpg
    41,6 KB · Aufrufe: 161
MinimumSize der Form = MinimumSize der Control ?

Wenn dir das nicht reicht eventuell das Resize Event behandeln ?
 
Aber die MinimumSize der Control ist doch (bedingt durch das Layout der Form), kleiner als die MinimumSize der Form... !?

...weitere AW's gern!
 
Naja du musst dann natuerlich noch die Location des Controls addieren. Also Control.X + Control.Width = minimumSize.Width. Dann kommt noch der Offset vom Frame dazu, also der Fensterrand. Da weiss ich gerade nicht wie man den bei .net genau rausbekommt.
So wie ich .net kenne gibts da sicher einfach ne Bool die man setzen muss. Ich schau nochmal nach.

So habs nochma probiert.

Code:
this.MinimumSize = new Size(tabControl1.MinimumSize.Width + tabControl1.Location.X + (this.Width - this.ClientSize.Width),
                tabControl1.MinimumSize.Height + tabControl1.Location.Y + (this.Height - this.ClientSize.Height));

das funktioniert bei mir soweit. Ist aber mit Sicherheit nicht die eleganteste Loesung.

Btw: Ist C#. Aber sollte sich ja nicht gross anders Verhalten
 
Zuletzt bearbeitet:
Danke für die AW! ...konnte es aber noch nicht testet! Sicherlich gibt es auch noch ne einfachere und kürzere Möglichkeit. Wenn also jemand noch eine Idee hat!? ...Danke!
 
vbuser09 schrieb:
Sicherlich gibt es auch noch ne einfachere und kürzere Möglichkeit.
Nö gibts nicht, imo ist das die einfachste und eleganteste Lösung.
Ich versteh auch nicht ganz, was du daran jetzt schwer findest...

Ne kleine Möglichkeit den Code abzukürzen gibts noch:
Du musst nur im Designer bei deinem UserControl die Anchor Property auf Top, Bottom, Right setzen, dann brauchst du keine Rücksicht auf die Location deines UserControls nehmen, weil das dann autonmatisch geschieht.

Der Code sieht dann so aus:
Code:
int minWidth = tabControl1.MinimumSize.Width + (this.Width - this.ClientSize.Width);
int minHeight = tabControl1.MinimumSize.Height + (this.Height - this.ClientSize.Height);

this.MinimumSize = new Size(minWidth, minHeight);
(im Prinzip das gleiche was toxn schon geschrieben hat, nur eben ohne Location und etwas übersichtlicher gestaltet imo ;))
 
Zurück
Oben