length of string

  • Thread starter Thread starter cc
  • Start date Start date
C

cc

Hi,

From a C# application am I writing some text in a Word.Table, in a Cell of
the Table to be more precise.

The cell has a certain width and any string written in the cell will cover
one or more lines in the cell depending on its length. In other words, it
will use wordwrapping

Now, I have to determine the amount of lines that the text will take when
written in the cell.
How can I do this ?

thnx
Chris
 
where is your string coming from before you insert it into the table?
StringBuilder? String array?

need some more info/code snippet to help
 
Hi,

You can use Graphics.MeasureString but you need to know the font, another
problem is the wordwrapping , I bet you would have to build your own
wrapping algorith and see how many lines you get
 
Hi,

it is just a string.

some code :
m_table1.Cell(3, 4).Width = 200;
m_table1.Cell(3, 4).Range.Text = "This is my test string. It's length can
vary..."
 
you can do the following:

string myString = "This is my test string. It's length can vary.";

m_table1.Cell(3, 4).Width = 200;
if (myString.Length > 200) {
// do processing or break apart the string into seperate lines I.E.
string stringPart = myString.Substring(0, 200);
string stringPart2 = myString.Substring(200, 200);
}

is this what your looking for?
 
Hi,

I don't think this is what the OP wants, he wants to know how many rows were
used to display the string when it was drawn in the screen.

The cell width is a pixel value, where the string length is in char, of
course one char does not fit in one pixel , so there is where the thing gets
nasty :)

OP:
See my other post to how to measure a string's representation in the screen
 
Hi,

You can use Graphics.MeasureString but you need to know the font,
another problem is the wordwrapping , I bet you would have to build
your own wrapping algorith and see how many lines you get


Or give it the dimensions of the cell..

Overloads Public Function MeasureString( _
ByVal text As String, _
ByVal font As Font, _
ByVal layoutArea As SizeF _
) As SizeF

:-)
 
There is an overloaded .measurestring method that allows passing it the width
and returning the size which will give you the height. Divide this by the
font height and you will get the no. of lines.
 
Dennis said:
There is an overloaded .measurestring method that allows passing it the width
and returning the size which will give you the height. Divide this by the
font height and you will get the no. of lines.
--

Sure, that will work.
As long as you don't mind silly little things like line breaks in mid character.

You really need a more involved algorithm to do proper word wrapping.

Bill
 
Hello, Chris,

Just a thought...

Do you really need to know the number of lines before you write to the
cell? Or could you write to the cell, and then ask: "How many lines are
in the cell?"

Cheers,
Randy
 
It's really a pretty simple algorthim to break the string into multiple
strings at the line breaks then use measurestring on each substring and add
in lines for each line break. The user should be able to extrapolate from
measurestring method to this algorthim.
 
That might be an option...

But I'll probably have a look at the Graphics.Measuestring()

thanks to all of you !

Chris
 
Back
Top