Rdimensionare un area di testo

martedì 13 novembre 2007 - 09.29

forumQuarz Profilo | Junior Member

Salve,
come si fa per ridimensionare un'area di testo in base alla lunghezza del testo??
Vorrei creare un'area che in base al testo si allunghi dinamicamente....

Grazie

alextyx Profilo | Expert

Credo possano esserti utili questi link, uno è di una discussione freschissima in cui si discute diffusamente di problemi riguardanti la misurazione delle stringhe:

http://forum.masterdrive.it/articoli-visual-basic-net-36/misurare-lampiezza-width-stringa-19105/

http://forum.masterdrive.it/visual-basic-net-18/sottrarre-coordinate-20138/

buona lettura

forumQuarz Profilo | Junior Member

Grazie!!!
Ci do subito un occhiata!!!

Caly82 Profilo | Newbie

>Salve,
>come si fa per ridimensionare un'area di testo in base alla lunghezza
>del testo??
>Vorrei creare un'area che in base al testo si allunghi dinamicamente....
>
>Grazie

Cosa intendi x area di testo? Una textbox?
E per ridimensionamento intendi la lunghezza e l'altezza del controllo?

Ciao!

forumQuarz Profilo | Junior Member

Ho provato a fare come dici ma ho un valore più grande di quanto dovrebbe.

Ti posto il codice:

C#, .Net 2.0

(VB -> C#, C# -> VB)http://www.carlosag.net/tools/codetranslator/default.aspx

//sono in una classe che estende un'area di testo(RichTextBox)
public void MisuraStringa() {
Bitmap b;
// Warning!!! Optional parameters not supported
Graphics g;

//il font l'ho preimpostato nella classe
Font f = new Font(this.Font.Name, this.Font.Size);
b = new Bitmap(1, 1, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
g = Graphics.FromImage(b);
g.PageUnit = GraphicsUnit.Pixel;

float altramisura = g.MeasureString(this.Text, f).Width;
g.Dispose();
b.Dispose();

this.Width = (int)altramisura;

Il mio problema poi sarebbe quello di determinare l'altezza di un'area di testo per farci entrare il testo

alextyx Profilo | Expert

Il primo link:
http://www.codeproject.com/vb/net/MeasureStrings.asp

riporta una procedura che restituisce larghezza e altezza.

forumQuarz Profilo | Junior Member

ho fatto esattamente quello che c'era sul link ma l'area di testo è più lunga del testo.....

Forse:
(C#, .NET 2.0)

SizeF stringSize = g.MeasureString(this.Text, f);
int lunghezza = (int)stringSize.Width;
g.Dispose();
b.Dispose();

//dovrei forse effettuare una conversione in modo da associare all'area il giusto valore??

//lunghezza area di testo
this.Width = lunghezza;

alextyx Profilo | Expert

Effettivamente, non è precisissima.
Ho fatto qualche prova, proprio con una richtextbox, mettendo del testo in una textbox e trasferendolo nella richtextbox, alla pressione di un pulsante. Ho anche inserito un fontdialog per fare prove con più font.
Questa soluzione sembra passabile, ma non sono ancora contento del tutto. Purtroppo, per adesso debbo accontentarmi, non ho modp di insisterci ancora!

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.RichTextBox1.BorderStyle = BorderStyle.None
Me.RichTextBox1.ScrollBars = RichTextBoxScrollBars.None
Me.FontDialog1.ShowDialog()
Me.RichTextBox1.Font = Me.FontDialog1.Font
Dim S As Size = TextRenderer.MeasureText(Me.TextBox1.Text, Me.RichTextBox1.Font)
Me.RichTextBox1.ClientSize = S
Me.RichTextBox1.Text = Me.TextBox1.Text

End Sub
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5