检查是否要显示Control.Text

时间:2015-09-08 09:16:31

标签: c# winforms

如果已翻译的应用程序的字符串仍适合现有UI,我正在尝试进行一些自动测试。转换过程只需要一个现有的资源程序集来转换所包含的资源,并为新语言创建一个新的资源程序集。简单但是这样就没有保证翻译仍然适合UI(UI不涉及翻译过程)并且可能会被截断到各处。因此,对于自动检查,我需要了解如何在UI上找到截断的文本。

我到目前为止尝试过:

  • 测量控件的客户端大小,测量文本长度和 比较它们。不行,因为似乎没有办法找出答案 用于放置文本的控件的实际〜客户端大小 它(对于一个按钮,不仅仅是尺寸减去填充),
  • 将AutoSize设置为true并检查控件是否增长。那 只适用于非wordwrapping控件,似乎有 这里没有明显的限制。控件可能会增长以适应其上的Text 设置自动调整大小时的表面,但之前的文本是合适的 也。边距可能相当窄,但文字在哪里 接头。

还有更多的想法可行吗?或者是否有一些可能使上述方法有效的微调?如果有一个简单的Win API方法我可以调用它会给我实际显示的控件文本而不是程序员/程序在控件上显示的文本会很棒。

1 个答案:

答案 0 :(得分:0)

从非翻译版本中获取字符数量,并将它们与翻译版本的长度区分开来,然后将当前控件宽度乘以差值。它可能看起来像这样。

float scalingAmount = 0.1 //This is just an example value, you'd probably want to adjust this yourself
float difference = oldLabel.Text.Length - label.Text.Length;
label.Width = oldLabel.Width * (difference/scalingAmmount)