我想知道如何在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到wordwrap来做到这一点。它正在 自动 ,这是一个问题,因为这使得很难知道它是否已超过700px。
这是每当我尝试打印 PAddressLength :
{宽度= 633.1881,高度= 47.14897}
我在想如果我可以使用PAddressLength.Width从中提取宽度值,那么我可以部分解决这个问题。但有了这个,我需要计算剩下的空间(即700px - 633.1881px)是否能容纳下一个单词(如果有的话)
打破问题:
其他, (红利问题;可能或可能不会解决)是否有某种方法可以提取值 633.1881 然后计算下一个单词是否适合(700 - 633.1881)px 空格?
答案 0 :(得分:2)
MeasureString有一个重载,它返回out参数中使用的行数:https://msdn.microsoft.com/en-us/library/957webty%28v=vs.110%29.aspx