?
Solved

Height of text

Posted on 2002-06-27
8
Medium Priority
?
855 Views
Last Modified: 2006-11-17
Since microsoft desided to remove the autosize property for the labels in vb.net (its still there but only on a horizontal sence of the word), I am trying to determin the required height of a text (with the current font, fontsize etc). I have tried everything (.PreferredHeight and so on) but have faild ,looking for ideas. What I am trying to do is to create a label that will autosize vertical (down) when a text is added to it that cannot fit into its widht (wordwrap).

PLZ PLZ PLZ ideas anything that might pop into your heads, give it to me... I will post the solution if I solve it my self.

Sincerly
Claes
0
Comment
Question by:clylv
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
8 Comments
 
LVL 22

Expert Comment

by:CJ_S
ID: 7113052
So you want the text to always be on one line?

CJ
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7113084
Anyway, no matter how you can retrieve the height of the font by using code similar to the following:

System.Drawing.Font x = new Font("Verdana", 3);
x.GetHeight()

You can use these functions to determine how big your font needs to be.

CJ
0
 

Author Comment

by:clylv
ID: 7113154
Thanx CJ S,
That goes a way but what I need to know is how many lines in a multiline label I need to make room for.

EX

Label1.wordwrap = true
Label1.width = 50
label1.Text = "lllllllllllllllllllllllllllllllllllllllllll"

Now the text will require more space thatn the 50 pixels that has been assigned to it.
The text will be displayd something like this:
lllllllllll and the rest will be hidden.
What I want to be able to do is to calculate the number of needed rows so that I can adjust the height of the label to accomodate the whole text like this:
lllllllllll
lllllllllll
lllllllllll
lllllllllll
lllllll
The autosize property will not let me do this, so I tried this formula

Dim Label2 as Label
Label2.AutoSize = true
Label2.Text = Label1.Text
dim rows as integer
rows = label1.width / label2.width
dim iHeight as integer
iHeight = rows * font.GetHeight
Label1.Height  = iHeight

And it works sortof,

The problem is that like most wordprocessors the Label changes the spacings in a text when wordwrap adds a new line. And then sometimes you end up with a few char or a word below the Label.... irritating lik hel.... and I can't find a way around it.

/claes
0
A new era in Cloud training has arrived.

A day that will go down in Cloud history.. But are you ready for it? Will you accept this Cloud challenge?

 
LVL 22

Accepted Solution

by:
CJ_S earned 600 total points
ID: 7113182
Just add the linespacing

iHeight = rows * (Font.GetHeight + Font.FontFamily.GetLineSpacing(FontStyle.Regular))
0
 

Author Comment

by:clylv
ID: 7113207
AHHHHHHHHHH!! CJ S YOU HAVE NO IDEA HOW HAPPY YOU JUST MADE ME!!!

Been trying to solve this for 3 (three!) weeks know and you just naild it for me my friend! works like a charm, a grade A and all the points are yours!

Once again THANKYOU!!!

/Claes
0
 
LVL 22

Expert Comment

by:CJ_S
ID: 7113214
Glad to help ;-)

CJ
0
 

Author Comment

by:clylv
ID: 7113557
mayby I was a bit premature there, or mayby im just stupid, it looked as if it worked like a charm and mayby it will but the linespaceing returns a value of 2355, is this in some strange unit do you know?
It looked like it worked fine but in reality the label is 10 as high as the form?

/Claes
0
 

Author Comment

by:clylv
ID: 7113572
mayby I was a bit premature there, or mayby im just stupid, it looked as if it worked like a charm and mayby it will but the linespaceing returns a value of 2355, is this in some strange unit do you know?
It looked like it worked fine but in reality the label is 10 as high as the form?

/Claes
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary Displaying images in RichTextBox is a common requirement with limited solutions available. Pasting through clipboard or embedding into RTF content only support static images.  This article describes how to insert Windows control objects int…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Suggested Courses

765 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question