【问题标题】:C# displaying Thai in a textboxC# 在文本框中显示泰语
【发布时间】:2017-11-20 10:08:17
【问题描述】:

我正在创建一个将 Unicode 显示到文本框和图片框的应用程序。

我在尝试使用泰语时遇到了一些问题,我不会说泰语,但我知道规则允许我有一个字符,然后在它之上最多有两个其他标记。

我尝试在文本框中输入以下 Unicode。 0E2c 然后在其上添加 0E36,然后是 0E4B。我已将文本框的字体大小设置为 30。我尝试和自动调整大小的文本框如下注释我尝试添加的高度超出了我的需要,以防万一会有所帮助,但可惜没有。

Size size = TextRenderer.MeasureText(txtbx_text.Text, txtbx_text.Font);
txtbx_text.Width = size.Width;
txtbx_text.Height = size.Height + 25;

我想要得到的是,但文本框显示的是,请注意顶部的位丢失了。知道如何强制文本框正确显示泰语吗?

我认为 txtbx_text.height 不起作用,因为我将大小增加了 2000 并且没有任何反应。宽度很好,那么如何使高度起作用?

代码可从http://www.filedropper.com/i-braille 获得。 选择页面 0e 将高度设置为 30。右键单击每个字符以构建字符串左键单击提供信息。 Form1.cs 第 116 行是我尝试设置文本框大小的地方。

【问题讨论】:

  • 我认为您的假设可能是错误的。我刚刚使用虚拟键盘对此进行了测试,以创建所需的组合字符并将其设置为文本框值。显示很好,包括小加号。展示你是如何创造角色的。我宁愿怀疑那里的问题。
  • 增大高度无济于事,只会在字母底部创建更多空间。字体很重要。不知道哪种字体最适合泰语文本,但不是 Winforms 中的默认字体。例如,“Segoe UI”可以正确完成工作。
  • @HansPassant 我尝试使用默认的 MS 无衬线字体以及 AngsanaUPC。两者对我来说都很好。
  • 我可以毫无问题地重现 OP 的问题。并用更好的字体修复它。此类问题需要记录 Windows 版本。
  • 我正在使用带有 VS2015 的 Windows 7 Professional SP1

标签: c# unicode textbox thai


【解决方案1】:

我收到一个泰国人的消息,他们告诉我字体是问题所在,并非所有字体都有效,所以他们不能在 UI 中全部使用它们,我不知道。他们建议使用“Angsana New”,我试过了,到目前为止一切正常。这是 Bembo 的证明,我将字符从文本框顶部移开

但是当我只更改字体类型时,我得到的大小保持不变

这就是它应该出现的样子,所以我认为使用这种字体会更好。如果其他人有泰语经验并且可以提供帮助,我将不胜感激任何 cmets 和帮助。目前我认为我对前进的道路有一个答案。

【讨论】:

    【解决方案2】:

    发现问题。 将文本框的字体属性 GdiVerticalFont 设置为 True。

    【讨论】:

    • 几乎但不是所有组合。例如我尝试(全部来自第 0E 页)char C2,然后是 43,然后是 A4,并且不会调整文本框的大小。 B2 与 43 和 A4 适合。我认为这是我添加的额外项目没有在某处设置事件来调整文本框的高度?
    • 对我有用,但我强烈认为您的意思是 2C、34 和 4A,因为您提到的那些不在泰国地图上。你如何添加这些项目?请张贴代码。
    • 我绝对是指 C2,43 和 A4。如果您对如何为 Unicode 编号有疑问,请转到第 00 页并查看零,它将位于第 30 位,因此从水平方向取数字,然后垂直方向给您 30。
    • @user3884423 我其实并不怀疑。在这里检查,完整的地址和所有:jrgraphix.net/r/Unicode/0E00-0E7F Thai 只去 E0*7F*,所以 C2 肯定超出范围。
    • @user3884423 “我绝对是指 C2,43 和 A4。”。所以你的意思是混合一个老挝字符和一个泰国字符,然后是老挝?你真的因此而对我投了反对票吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 2012-01-19
    相关资源
    最近更新 更多