如何从 C# 中的一行检测字符串溢出?

How to detect a string-overflow from a line in C#?

我想知道如何在 C# 中进行自动换行,当时我遇到了一个很好的解决方案,可以解决我在一行中自动换行的问题 in this URL。不幸的是,我没有足够的声誉直接向 OP 询问我遇到的 一个 特定的 问题 (而且处理这个问题的人很可能是无限期地)

问题描述:
如果需要使用此代码对字符串进行自动换行,我可以对其进行自动换行:

Graphics PAddress = e.Graphics;

SizeF PAddressLength = PAddress.MeasureString("Residential Address: " + RAddressTextBox.Text, new Font(fontface, fontsize, FontStyle.Regular),700);

PAddress.DrawString("Residential Address: "+PAddressLength + RAddressTextBox.Text, new Font(fontface, fontsize, FontStyle.Regular), Brushes.Black, new RectangleF(new Point(pagemarginX, newline()),PAddressLength),StringFormat.GenericTypographic);

但是,我找不到当单行字长溢出时接收触发的地方。

例如:
在该代码的 LINE-2 中,只要字长超过 700px,它就会移至下一行。它通过跟随 RectangleF 进行自动换行来实现。它是自动这样做的,这是一个问题,因为这使得很难知道它是否已经超过 700px。

这是我尝试打印时显示信息的格式 PAddressLength:

{Width=633.1881, Height=47.14897}

我在想,如果我可以使用 PAddressLength.Width 从中提取宽度的值,那么我可以部分解决这个问题。但是有了这个,我将需要计算剩余的 space(即 700px - 633.1881px )是否会容纳下一个单词(如果有的话)

分解问题:

另外,奖金问题;可能会或可能不会解决)有什么办法提取值 633.1881 然后计算下一个单词是否适合 ( 700 - 633.1881 )px space or not?

MeasureString 有一个重载,returns out 参数中使用的行数:https://msdn.microsoft.com/en-us/library/957webty%28v=vs.110%29.aspx