我正在开发一个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