【问题标题】:How can I get the length of string for a page of screen?如何获取屏幕页面的字符串长度?
【发布时间】:2016-06-28 06:24:05
【问题描述】:

现在,我正在尝试使用 C# WPF 创建一个小说(引导)文本阅读器。

我正面临一个问题。 我不知道如何将字符串(来自文本文件)拆分为屏幕页面。 (像书页) (一页屏幕由标签UI控件实现。) 因为字符串有 'New Line \n' & 'Tab' 字符。 所以我无法计算一个标签(一页屏幕)中可以插入多少个字符。 label.TextLength 返回可以插入标签的字符数。 但是,如果字符串有 '\n',就会产生很多空白。

所以我希望知道如何计算可以插入带有 '\n' 的标签的字符串的长度。 或者,请指导我如何使用其他 UI 控件轻松创建此程序。

感谢您的意见。我添加了如何使用标签控件。 在默认标签 UI 控件中,通过插入标签的字符串更改了它的大小。 但是,在这个程序中,我将修复标签控件的大小。它的大小将适合表格大小。

所以,我应该知道标签的宽度和高度(线)。 或者我希望知道我的程序的控件或库。(很遗憾,我还没有找到。)

谢谢!

【问题讨论】:

  • 您是否尝试过使用 TextWrapping="True" 的 TextBlock 控件?
  • 我会试试 TextBlock。但我不确定只是一页字符串..因为它取决于很多事情。我希望从 UI 返回关于此 UI 中的字符串有多长。所以我应该从xxx开始下一页。
  • 嗯,这取决于屏幕大小、字体系列、字体大小等。你没看到流文档吗?看看它。 msdn.microsoft.com/en-us/library/aa970909(v=vs.100).aspx另一个有用的链接:codeproject.com/Articles/31834/…
  • 非常感谢!!我找到了这些东西!和我想做的一样!
  • 欢迎您! ;)

标签: c# wpf user-interface text


【解决方案1】:

您的标签可以有AutoSize=trueMaximumSize=new Size(maximumPageWidth, 0); 这样,当达到最大宽度时,您的标签会自动换行。每行只会增加标签的高度。

然后,您需要将您的文本逐行添加到此标签中。每次向此标签添加一行时,请检查是否达到 maximumPageHeight

如果达到最大高度,那么这就是您的页面结束的地方。在此之后,您需要将下一行添加到新页面。

编辑:如果您使用 System.Windows.Forms.Label,上述解决方案将起作用

【讨论】:

  • 关于WPF的问题
【解决方案2】:

FlowDocument 是我想要的解决方案! 谢谢你让我知道那件事。 - cicciorocca!!

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 2018-09-14
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多