Entwickler-Ecke

Basistechnologien - Button.AutoSize-Eigenschaft erzeugen


VampireSilence - Fr 05.11.10 20:13
Titel: Button.AutoSize-Eigenschaft erzeugen
Ich sitze hier gerade an einer Umsetzung für eine AutoSize-Eigenschaft für Buttons. Das Ergebnis soll später genau wie bei den Labels sein und ich brauche eigentlich nur einen kleinen Denkanstoß.

Bisher berechne ich die Breite der Buttons folgendermaßen:
14 + 10 * Text.Length

Das entspricht der Größe für die größten Buchstaben, wie "O" oder "X". So passen zumindest schonmal alle Zeichen rein, ohne verschluckt zu werden (Höhe übrigens 20px, immer -> kein Zeilenumbruch möglich / bzw. sichtbar), aber in die Button kommen später keine Texte, wie "OOO" oder "XX", sondern solche wie "Isobenzylketontetranitrat". Und besonders bei diesem Beispiel ist der Button später viel zu lang für den Text.

Als weitere kleine Erleichterung habe ich auch eine konstante Schriftart-/ und größe: "Microsoft Sans Serif; 8,25pt". Habt ihr da eine Idee ?

mfg
- VampireSilence


Th69 - Fr 05.11.10 21:09

Schau dir mal Graphics.MeasureString bzw. TextRenderer.MeasureText an. Damit kannst du dir die Größe eines Textes in Pixeln ermitteln lassen und dann entsprechend die Größe deines Buttons setzen.


Ralf Jansen - Fr 05.11.10 21:26

Von welcher Darstellungstechnik reden wir hier?
Zumindest in Winforms haben Buttons bereits eine funktionierende AutoSize Eigenschaft.


VampireSilence - Fr 05.11.10 21:56

@Th69
Echt praktisch, wusste garnicht, dass es sowas schon fertig gibt ! Das war genau das, was ich brauchte.

@Ralf Jansen
Ja, wir reden von WinForms, allerdings generiere ich die betreffenden Buttons erst zur Laufzeit, daher muss ich die Breite direkt selbst errechnen. Und da AutoSize auch die Höhe verändert (was ich nicht will), kann ich diese nicht nutzen.

mfg
- VampireSilence