2010-07-07 64 views
1

我們有一個WinForms應用程序,包含控件,如位於窗體上的圖片框。基礎應用程序是英文的。簡體中文WinForms控件位置

我們已經將此應用程序翻譯成多種不同的語言(法語,西班牙語,丹麥語,希臘語等),最近又翻譯成簡體中文。翻譯後的應用程序完美適用於我們的操作系統(英語)。

我們的一位客戶在其操作系統Windows XP中以簡體中文安裝了應用程序。我們的應用程序的佈局被打破。簡而言之,元素被推到右下角的因素與元素和左上角之間的距離成正比。例如,設計視圖右上角的元素被推出屏幕右側,而頁面底部的項目被向下推到右側。

該應用程序在使用時支持切換語言。當語言環境爲en-US時,不存在佈局問題。切換到簡體中文時,會出現此問題,但僅限於簡體中文操作系統。屏幕分辨率和DPI是相同的。

你有什麼想法嗎?我確定它必須是一個簡單的配置設置,但我一直無法解決這個問題。

回答

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); 
    } 
+0

我沒有別的選擇,而不是完全設計元素的佈局,使之自動調整窗口的大小即使我有一個固定的窗口大小? 我假設你粘貼的代碼應該只在默認字體系列是非標準的時候執行?字體是否對圖片框有影響?我會期望這個文本區域,但不是圖形元素。 – 2010-07-07 16:24:56

+0

如果我理解正確,禁用AutoScaleMode將是一個簡單的解決方法,它可以使它在任何地方看起來都是一樣的,但是當低視力軟件的用戶會失去功能嗎? (可訪問性問題?) – 2010-07-07 16:31:02

+0

禁用它不是一個選項。控件中的文本將被剪裁,因爲控件不夠大。使漢字不可讀。 – 2010-07-07 16:33:36