【发布时间】:2013-10-25 05:33:46
【问题描述】:
我正在为在 .NET Framework 2.0 上运行的 WinForm 应用程序使用常规的 System.Windows.Form.RichTextBox 控件来显示状态日志。由于 Form 和其他几个子控件具有 AutoSize=True,因此应用程序在不同设置上的外观并不总是相同。我无法提前知道控件的确切大小,无论如何我想每个特定配置的比率(字体外观)/(gui 尺寸)都有一些含义。
所以现在让我们描述最动态的场景。我想知道字符串的确切最大长度是多少,给定的 RichTextBox 可以显示在同一行(不超过边框或自动换行),这样的 RichTextBox 使用的是通用且已知的 monospaced font 和大小。
如果没有任何直接的方法来完成这个结果,是否知道我是否可以使用任何技巧,比如注入一个递增的测试字符串,直到一些奇怪的事件被触发?
【问题讨论】:
-
如果您的意思是
length是字符数,答案是it depends on the Font和字符本身。您最初的问题似乎与Scaling有关,无论如何winforms中的Scaling很难满足,但它至少支持一些automatic scaling,手动缩放并不容易,顺便说一句,您的问题看起来不像当你说the application does not always look the same way时如此严肃,我认为这就是你必须接受的,关键是你的GUI没有损坏太多,它只需要保持可用和可访问。 -
是的,字符串的长度当然是字符数。我理解您强调的缩放点,无论如何,我只是想最终进一步抽象问题到您只想在运行时为给定系统获取我要求的信息的程度。我的具体问题只是制作一个可以在 RichTextBox 上填充整行并保持标题在中心对齐的标题。我用我发布的代码作为我自己问题的答案解决了这个问题,但我仍然很想知道任何最终不那么臃肿的解决方案。
标签: c# .net winforms richtextbox