2010-09-27 46 views
1

我們有一個日本用戶報告,在他的日文機器上窗體大小被截斷(小尺寸,並非所有控件都顯示)。 在Windows窗體了.Designer.cs文件,我們有以下設置:Windows窗體窗體大小在日文操作系統上被截斷

 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 

而且,在形式構造函數,我們有一些代碼,看起來像調整窗體大小的DPI。 uThe日本用戶有一個普通的DPI設置Ø96

 // 
    // Adjust Form Size from DPIRatio 
    // 
    var size = this.Size; 
    // dpiRatio is 1.0 if DPI is 96, 
    // dpiRatio is less than 1.0 if DPI higher than 96 
    var dpiRatio = DPIHelper.DPIRatio; 
    var newSize = new Size((int)(size.Width/dpiRatio), (int)(size.Height/dpiRatio)); 
    this.MaximumSize = newSize; 
    this.MinimumSize = newSize; 
    this.Size = newSize; 

我確信,它來自於日本的Windows設定不同的字體,但沒有發現任何指導,遵循以處理在網絡上。任何想法?

回答

1

這是第二個片段中的代碼,它會混淆這一點。東亞機器通常利用XP功能,可以在不增加DPI的情況下增加系統字體大小。他們錯綜複雜的人物的可讀性很好。

只需刪除代碼即可解決問題。如果你想使表單不可修改,那麼將其FormBorderStyle設置爲Fixed3D。如果你堅持僞造邊界,那麼你必須將最小/最大尺寸分配移動到加載事件。只有這樣,表單的Size屬性纔會爲系統字體大小以及任何用戶首選項(如邊框的大小或標題文本的大小)計算和更正。哪個btw是你的代碼的另一種失敗模式。

+0

漢斯,感謝您的反饋。這個DPI代碼在這裏是爲了某些東西:沒有它,在DPI設置高於96的Wnd機器上,表單尺寸不是很好。你有關於處理較高DPI和日本機器的很好的想法嗎? – 2010-09-27 18:08:17

+0

較高的DPI也會選擇較大的系統字體大小。所以AutoScaleMode會處理表單的大小,使其更大。我不明白你爲什麼需要它。確保在更改DPI設置時讓機器重新啓動。 – 2010-09-27 18:18:12

+0

漢斯,實際上你寫的是理論,但實際上沒有這個DPI代碼,這是行不通的。在理論上,我們有很多Wnd兼容性問題應該可以正常工作http://codebetter.com/blogs/patricksmacchia/archive/2010/04/06/windows-programming-the-quot-it-works-on-my -machine-quot-syndroma.aspx – 2010-09-28 07:45:55