【问题标题】:WinForms Control position in Simplified ChineseWinForms 简体中文控件位置
【发布时间】:2011-03-12 21:07:03
【问题描述】:

我们有一个 WinForms 应用程序,其中包括位于表单上的图片框等控件。基本应用程序是英文的。

我们已将此应用程序翻译成多种不同的语言(法语、西班牙语、丹麦语、希腊语等),最近还翻译成简体中文。翻译后的应用程序可以在我们的操作系统上完美运行(英文)。

我们的一位客户在他们的操作系统 Windows XP 上安装了该应用程序(简体中文)。我们的应用程序的布局被破坏了。简单地说,元素被推到右下角,这个因子与元素和左上角之间的距离成正比。例如,设计视图右上角的元素被推到屏幕右侧,而页面底部的项目被向下和向右推。

应用程序支持在使用时切换语言。当区域设置为 en-US 时,没有布局问题。切换到简体中文时,会出现问题,但仅限于简体中文操作系统。屏幕分辨率和 DPI 相同。

你有什么想法吗?我确定它一定是某个地方的简单配置设置,但我一直无法解决这个问题。

【问题讨论】:

    标签: winforms localization cjk


    【解决方案1】:

    系统基本字体的大小也很重要。这确实是您可以在 XP 上更改的内容。这将调用表单的自动缩放逻辑,旨在确保控件变大以适应更大的字体大小。

    这是设计使然,由表单的 AutoScaleMode 属性控制。不要改变它,重新缩放很重要。只要确保表单布局仍然看起来不错,使用 Anchor 和 Dock 等属性,TableLayoutPanel、FlowLayoutPanel 等控件。或者 Resize 事件来处理棘手的问题。

    将其粘贴到您的表单中以测试此逻辑,而无需更改系统设置:

        protected override void OnLoad(EventArgs e) {
            this.Font = new Font(this.Font.FontFamily, this.Font.SizeInPoints * 125 / 96);
        }
    

    【讨论】:

    • 我别无选择,只能完全设计元素的布局以使其自动调整窗口大小,即使我有固定的窗口大小?我假设您粘贴在那里的代码应该仅在默认字体系列非标准时执行?字体对图片框有影响吗?我本来希望这是文本区域,但不是图形元素。
    • 如果我理解正确,禁用 AutoScaleMode 将是一个简单的解决方法,它会使其在任何地方看起来都一样,但是当软件的用户视力低下时我会失去功能? (可访问性问题?)
    • 禁用它不是一个选项。由于控件不够大,控件内的文本将被剪裁。使汉字不可读。
    • 我很想知道为什么中文字符适合美国版本的 Windows 而不是中文版本?是什么让字体大小与 RESX 文件中定义的不同?
    • 我已经告诉过你,这是一个XP系统设置。该选项隐藏在某处的控制面板+显示小程序中。现在还没有接近 XP 机器。
    猜你喜欢
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多