我想知道如何在C#中自动换行,当我遇到一个非常好的解决方案,解决了我在这个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);
Run Code Online (Sandbox Code Playgroud)
但是,当单词长度从单行溢出时,我找不到接收触发器的位置.
例如:
在该代码的LINE-2中,每当字长超过700px时,它就会移动到下一行.它通过跟随RectangleF到wordwrap来做到这一点.它是自动执行的,这是一个问题,因为这使得很难知道它是否已经超过700px.
这是我尝试打印PAddressLength时显示信息的格式:
{宽度= 633.1881,高度= 47.14897}
我在想如果我可以使用PAddressLength.Width从中提取宽度值,那么我可以部分解决这个问题.但有了这个,我需要计算剩余空间(即700px - 633.1881px)是否能容纳下一个单词(如果有的话)
打破问题:
另外,(红利问题;可能或可能不会解决)是否有某种方法可以提取值 633.1881,然后计算下一个单词是否适合(700 - 633.1881)px空格?
MeasureString 有一个重载,它返回输出参数中使用的行数:https ://msdn.microsoft.com/en-us/library/957webty%28v=vs.110%29.aspx