如何从 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 )是否会容纳下一个单词(如果有的话)
分解问题:
- 我已经知道当字符串长于使用Graphics.MeasureString as given in this solution指定的字符串时如何自动换行另一个问题。
- 但是这个^过程是自动发生的,所以我想知道如何检测是否发生了自动换行(以及每行 700 像素换行的行数最大宽度)
- 我需要知道已经换行的行数才能知道执行的次数newline()我写的函数,每次执行时都会给出适当的行距。
另外,(奖金问题;可能会或可能不会解决)有什么办法提取值 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
我想知道如何在 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 )是否会容纳下一个单词(如果有的话)
分解问题:
- 我已经知道当字符串长于使用Graphics.MeasureString as given in this solution指定的字符串时如何自动换行另一个问题。
- 但是这个^过程是自动发生的,所以我想知道如何检测是否发生了自动换行(以及每行 700 像素换行的行数最大宽度)
- 我需要知道已经换行的行数才能知道执行的次数newline()我写的函数,每次执行时都会给出适当的行距。
另外,(奖金问题;可能会或可能不会解决)有什么办法提取值 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