Domanda

Ho una stringa come questa:

string s = "This is my string";

Sto creando un rapporto Telerik e devo definire un textbox che è la larghezza della mia stringa. Tuttavia, la proprietà size deve essere impostata su Unit (Pixel, Point, Inch, ecc.). Come posso convertire la lunghezza della mia stringa in, diciamo un Pixel in modo da poter impostare la larghezza?

EDIT: ho provato a ottenere un riferimento all'oggetto grafico, ma questo viene fatto in una classe che eredita da Telerik.Reporting.Report .

È stato utile?

Soluzione

Senza utilizzare un controllo o un modulo:

using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
    SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}

O in VB.Net:

Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1))
    Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point))
End Using

Altri suggerimenti

Size textSize = TextRenderer.MeasureText("How long am I?", font);

In questo caso, di solito uso un modo sporco, ma semplice:

  • Aggiungo un'etichetta invisibile che la sua proprietà AutoSize è true - lavoro sporco -.
  • Quando voglio avere il Width per una stringa specifica, lo imposto su Label.Text .
  • Il Width di Label mi darà il valore corretto.

Dipende anche dal carattere. La lunghezza della stringa non è sufficiente.

È possibile creare un'istanza di un oggetto grafico e utilizzare il metodo MeasureString () . Ma dovrai passare il nome del font, la dimensione del font e altre informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top