Mar*_*ark 6 c# datagridview visual-studio-2010 visual-studio
我有一个Windows窗体,包含3个文件:
AbcFrm.cs
AbcFrm.Designer.cs
AbcFrm.resx
每当我对datagridview的任何属性进行一些更改或添加新事件时,控件的大小会向右侧和底部变大,并导致某些控件超出范围.
我在执行次要属性更改之前和之后比较了.Designer.cs文件(例如,将datagridview的tabStop属性值从true更改为false),并发现在.Designer.cs文件中自动添加/更改了一些行/属性:
.Size价值变化.Location价值变化.Padding价值变化.AutoScaleDimensions变得更大.ClientSize变得更大编辑
我意识到当我将分辨率从150%更改为125%并重新打开应用程序时,控件又回到正确的位置,因为窗体现在具有更大的缩放尺寸.我的问题与这个问题类似
原因是代码可能已在具有不同分辨率的计算机中编辑.然而,解决方案并不令人满意,因为它不能解决问题,只能找出原因.
我该如何防止这种情况发生?我正在使用Visual Studio 2010,我的操作系统是Windows 10.
这是由于AutoScaleMode属性,它根据不同开发机器之间的每英寸点数(DPI)的差异来缩放winforms中对象的大小和位置.这是一个不能也不应该更改的功能.有关官方文档,请参阅MSDN上的Windows窗体中的自动缩放.
假设有两台机器,机器A和B.机器A有96 DPI,比例因子100%.机器B具有144 DPI和150%比例因子作为其推荐设置.在机器A中创建了一个WinForm,而机器B正在尝试编辑该WinForm.
当机器B中的Visual Studio遇到机器B的DPI与用于创建WinForm的DPI不同时,它会自动缩放WinForm中的对象,以尝试使WinForm在机器B中显示为在机器A中的外观. .因此,这会导致WinForm.Designer.cs文件中的某些属性自动更改.
为了在没有任何自动对齐的高DPI机器中继续编辑WinForms,我们需要在高DPI机器中设置DPI以匹配用于创建WinForm的机器中的DPI.这可以通过将缩放系数调整为100%(96 DPI;右键单击桌面>显示设置)并重新启动Visual Studio(或重新登录到Windows,如果这不起作用)来完成.
注意:此处的关键是将DPI调整为用于创建WinForm的计算机的原始DPI.仅调整缩放系数可能不起作用.您可能需要使用屏幕分辨率.
| 归档时间: |
|
| 查看次数: |
9233 次 |
| 最近记录: |