length of string

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
 
D

dkode

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

need some more info/code snippet to help
 
I

Ignacio Machin \( .NET/ C# MVP \)

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
 
C

cc

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..."
 
D

dkode

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?
 
I

Ignacio Machin \( .NET/ C# MVP \)

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
 
D

dotNuttah

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

:)
 
G

Guest

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.
 
B

Bill Butler

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
 
R

R. MacDonald

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
 
G

Guest

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.
 
C

cc

That might be an option...

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

thanks to all of you !

Chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top