我正在開發一個WinForms應用程序以及大量開發人員,他們擁有不同的屏幕配置,其中包括不同的DPI設置。因此,我們的應用程序可以擴展我們設置的所有窗體,使用AutoScaleMode = AutoScaleMode.Font
自動縮放,並設置相應的AutoScaleDimensions
,具體取決於開發窗體的設置。WinForms多個DPI,多個開發人員
利用這些構造的WinForms適當縮放跨不同的屏幕,問題是,當用不同屏結構的顯影劑打開在設計者模式的形式,Visual Studio中通過實際修改自動生成的代碼包含縮放控制對象的「新」尺寸,以及修改和AutoScaleDimensions
屬性以匹配新的監視器。
如果我沒有幾個開發人員在同一個表單上工作,這種行爲是可以的。如果發生這種情況,並且這些開發人員擁有不同的屏幕配置,那麼在使用我們的VCS合併這些更改時會產生大量衝突,而不是說我將爲不同的屏幕分辨率存儲值,從而搞亂了用戶界面。
爲了解決這個問題,我嘗試通過設置AutoScaleMode = AutoScaleMode.None
併爲我的控件實現自定義設計器來關閉自動縮放功能。這位設計師只將對象的尺寸保存在一個分辨率中,然後通過隱藏Size
屬性並根據當前DPI返回縮放值。我這樣做只是爲了發現VS設計人員根據定製設計人員所說的生成代碼,而不是實際存儲在對象中的值。
那麼,有沒有人知道如何解決這個問題?
'AutoScaleMode = AutoScaleMode.Dpi' [MSDN](http://msdn.microsoft.com/en-us/library/system.windows.forms。 autoscalemode(v = vs.110).aspx) – bansi 2014-10-01 03:43:04
@bansi你可以這樣做,它會導致相同的行爲。設計人員將修改自動生成的代碼上的值以匹配新的DPI .. – cgledezma 2014-10-01 03:45:38
在提交時忽略一些自動生成的代碼塊(如果您的VCS可以這樣做)? – 2014-10-01 09:53:17