Label im Panel soll sich an dessen Groesse anpassen
-
Mach AutoSize aus, zieh das Label so wie Du es brauchst, leg die Anchors auf alle Ecken und schau ob Dir das als Ergebnis reicht
-
Knuddlbaer schrieb:
Mach AutoSize aus, zieh das Label so wie Du es brauchst, leg die Anchors auf alle Ecken und schau ob Dir das als Ergebnis reicht
Ich brauche AutoSize, da sich der Inhalt staendig aendert. Desweiteren lege ich jegliche Controls dynamisch an, weil's erforderlich ist.
-
endline schrieb:
Knuddlbaer schrieb:
Mach AutoSize aus, zieh das Label so wie Du es brauchst, leg die Anchors auf alle Ecken und schau ob Dir das als Ergebnis reicht
Ich brauche AutoSize, da sich der Inhalt staendig aendert.
Nein, brauchst Du nicht, denn die Größe des Labels ist ja sowieso maximal – größer geht's nicht.
-
Zur Größe hat Konrad schon alles gesagt.
Ansonsten: Die Eigenschaft AutoSize und Anchor hat auch ein Dynamisch angelegtes Control.
-
Konrad Rudolph schrieb:
endline schrieb:
Knuddlbaer schrieb:
Mach AutoSize aus, zieh das Label so wie Du es brauchst, leg die Anchors auf alle Ecken und schau ob Dir das als Ergebnis reicht
Ich brauche AutoSize, da sich der Inhalt staendig aendert.
Nein, brauchst Du nicht, denn die Größe des Labels ist ja sowieso maximal – größer geht's nicht.
Trotzdem geht's nicht, wenn ich AutoSize ausstelle und alle Anchors setze.
-
-
Danke.
Der Trick lag also noch darin, die Hoehe des manuell Labels zu aendern, statt es von AutoSize machen zu lassen.
-
Leider ist es immer noch nicht anwendbar auf mein Programm. Ich habe jetzt mal nen Screenshot vom realen Programm gemacht und den Problembereich farblich hervorgehoben: http://img182.imageshack.us/my.php?image=bspjb9.png
Der gruene Bereich ist ein TableLayoutPanel mit zwei Spalten. Der gelbe Bereich ist das Label selbst. Die Laenge der Beschreibung ist variabel. Das TableLayoutPanel, also der Gruene Bereich muss sich an das die Groesse der Inhalte anpassen, aber nicht groesser sein (wie im Screenshot zu sehene ist).
Da Knuddlbaers Loesung darin bestand, die Size-Eigenschaft des Labels manuell zu setzen, sieht man, dass unnoetiger Platz verschwendet wird. Das Ziel ist eben, dass der Inhalt des Labels am Rand des gruenen Panels umgebrochen wird und Label.Height automatisch vergroessert wird. Bei AutoSize wird die Hoehe aber leider nicht gesetzt.
Ich hab's bereits so versucht:
table.Resize += delegate(object sender, EventArgs a) { text.MaximumSize = new Size(table.Width - table.GetColumnWidths()[0], text.Height); text.Width = table.Width - table.GetColumnWidths()[0]; };
Geholfen hat's nicht
-
Ich weiß nicht warum Du Dir das leben freiwillig so schwer machst. Wenn Du drauf stehst, entwickel mit C# und dem CF auf Windows CE Geräten
-
Naja, es ist schwer. Dein LabelResize2 hat immer noch eine konstante Groesse. Wenn ich das Fenster verkleinere, wird der Inhalt zwar umgebrochen, aber ist irgendwann nicht mehr zu sehen. Wenn ich das Fenster vergroessere, passt sich das TableLayoutPanel nicht seine Hoehe an.
-
Man man man...
Was willst Du ?
ch hab ein Panel, dass mit Dock = DockStyle.Top oben auf der Form zu sehen ist
Im Beispiel hat das TableLayout ebenfalls Dock = DockStyle.Top. Mit DockStyle.Top ändert sich die Höhe nicht!
Wenn ich das Fenster verkleinere, wird der Inhalt zwar umgebrochen, aber ist irgendwann nicht mehr zu sehen
Ja und was ist daran so schlimm ? Was soll denn passieren wenn die Anzeigefläche kleiner ist als das was angezeigt werden soll ? (Du kannst mit minWidth und minHeight dafür sorgen, das Dein Fenster eine Mindestgröße besitzt)
Du solltest Dich dringend mal mit Dock und Anchor beschäftigen sowie Deine Herangehensweise an die Problemlösung überdenken.
-
Knuddlbaer schrieb:
Man man man...
Was willst Du ?
ch hab ein Panel, dass mit Dock = DockStyle.Top oben auf der Form zu sehen ist
Im Beispiel hat das TableLayout ebenfalls Dock = DockStyle.Top. Mit DockStyle.Top ändert sich die Höhe nicht!
Doch, in Kombination mit AutoSize = true aendert sie sich wohl
Ja und was ist daran so schlimm ? Was soll denn passieren wenn die Anzeigefläche kleiner ist als das was angezeigt werden soll ? (Du kannst mit minWidth und minHeight dafür sorgen, das Dein Fenster eine Mindestgröße besitzt)
Es geht nicht um die Fenstergroesse! Ja, die aendert sich von mir aus, aber dann kriegt das Fenster halt Scrollbalken verpasst. Egal. Es geht hier um ein Panel, das sich exakt der Groesse des Inhalts anpasst. Und der Inhalt (Label) darf nicht ueber die Panelgrenzen hinausschiessen, soll umgebrochen werden. Aber es geht scheinbar nur, wenn man die Label.Height auf - von mir aus - 50 setzt. Aber dann hat man verschwendeten Platz bei Label.Text = "wenig". Denn bei Label.Height = 50 hat auch das Panel die Groesse 50, obwohl's eigentlich ca. 13 sein sollten.
Das Problem ist, dass das Label-Control unflexibel ist.
Du solltest Dich dringend mal mit Dock und Anchor beschäftigen sowie Deine Herangehensweise an die Problemlösung überdenken.
Hab ich schon. Dock und Anchor loesen das Problem nicht.
-
http://rothmichael.de/cpp/LabelResize.swf
Mach Dir doch einfach mal die Mühe und stelle ein Beispiel Deines Problems als kleines Projekt ins Netz so das man mal nachvollziehen kann was Du für Probleme hast. Aus Deinem Geschreibe und versuchen wird man nicht schlau.
-
Knuddlbaer schrieb:
http://rothmichael.de/cpp/LabelResize.swf
Mach Dir doch einfach mal die Mühe und stelle ein Beispiel Deines Problems als kleines Projekt ins Netz so das man mal nachvollziehen kann was Du für Probleme hast. Aus Deinem Geschreibe und versuchen wird man nicht schlau.
Doch, genau das wollt ich. Ist das LabelResize3?
LabelResize2: http://img340.imageshack.us/my.php?image=bsplb1.png
-
Ja, ich hab versucht von meiner Leitung zu kommen und hatte ein wenig wegen der Aussage
Doch, in Kombination mit AutoSize = true aendert sie sich wohl
experimentiert um heraus zu finden wie Du die Dinge eingestellt hast.
http://www.rothmichael.de/cpp/LabelResize2b.zip
Du wirst es über die cs Projektdatei öffnen müssen, ich war zu faul dafür den VS2005 aufzumachen (sitze gerade mit VS2008 an der Kiste.)
Im Grunde ist Dockstyle.Top , Autosize = true im LayoutPanel als auch im Label. (Also minimale Einstellungen, ein wenig Spieltrieb am LabelResize2 hätte da auch geholfen
Edit: Wenn ein Problem schwer zu erklären ist kann man auch ein Minimalbeispiel erstellen an dem man die Probleme erkennt. Das reduziert auch den Eindruck das Du nicht selbst suchen willst sondern zeigt Eigeninitiative.
-
OK, vielen Dank.
Ein Minimalbeispiel hatte ich eigentlich zu Anfang gepostet, mit Screenshot. Meine Erfahrung besagt jedoch, dass Loesungen fuer Minimalbeispiele nicht immer auf das eigentliche, reale Problem anwendbar sind, hatte naehmlich gleich danach das Problem des Minimalbeispiels behoben, was aber auf das reale Beispiel nicht angewendet werden konnte. Oder ich muss nochmal Minimalbeispiele ueben
Danke nochmal.
PS: VS2008 ist kein Problem.
-
Ein Minimalbeispiel wäre hierbei ein Compilierfähiges Projekt gewesen. Letztendlich haben Dir ja die Minimalbeispiele die zum "raten" der Angelegenheit aufgestellt wurden der Lösungsweg.
Du kannst nicht erwarten das andere komplette Beispiele liefern und nur ein "geht" oder "geht nicht" zurück kommt. Das swf hat Dir ja auch nicht weitergeholfen (als Vergleich zum Screenshot).
Screenshots vermitteln nicht die zahlreichen Einstellungen. Normal reicht ja ein Codestück und ggf. ein Screenshot, manchmal ist es aber von Vorteil wenn man das Projekt (oder ein Beispiel das sich genauso verhält) zum testen vorliegen hat.
In der knappen Freizeit die man für Foren abzwacken kann möchte man nicht unbedingt mit Raten und erstellen von kompletten Beispielen verbringen.