【问题标题】:Getting text length in pixels for all languages in c#在 c# 中获取所有语言的文本长度(以像素为单位)
【发布时间】:2013-09-03 20:27:46
【问题描述】:

我想知道如何计算复选框中文本的长度(以像素为单位)。文本的语言可以更改为任何语言,如英语、罗马尼亚语、西班牙语、中文、日语等。

我在同一行有一个复选框,后跟一个组合框,因此当复选框的文本长度发生变化时(更改语言时),我想相应地更改组合框的位置,以便复选框文本不会被组合框截断。

我尝试了 TextRenderer.MeasureText 方法。它适用于中文和日文,但对于其他语言,它不会返回正确的值。

有没有更好的方法来找出以像素为单位的文本长度?

提前致谢。

【问题讨论】:

  • AutoSize 怎么样?当然不能推断出确切的大小,但它几乎/接近确切的大小。
  • 使用TextRenderer.MeasureText(或适当的重载)似乎是首选方式。您是否有文本和字体的示例,其中预期长度不等于您从该方法获得的长度? (也请告诉我们预期和返回的长度)
  • AutoSize 不能解决问题
  • @Corak,MeasureText 方法有参数(字符串,字体)。所以,如果我的复选框文本语言不断变化,我不确定我应该在那里输入什么字体。
  • 对不起@KingKing,Autosize 确实解决了这个问题。谢谢。我将复选框文本设置为自动大小,并使用复选框的大小来设置组合框的位置。感谢您的快速反应。 :)

标签: c# checkbox combobox


【解决方案1】:

我假设您正在使用 WPF。 您可以将您的复选框或假的、不可见的文本框的实际宽度绑定到您的 ViewModel 并将您的文本放在那里。

当文本更改时,控件宽度会发生变化,这将反映在您的属性更改中

这有点绕路,但它很简单并且可以工作:)

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多