在Visual Studio中打开表单时,将修改资源文件

时间:2011-04-04 19:13:13

标签: c# visual-studio

当我打开我的主窗体设计窗口(VS2010中的C#文件)时,相关的资源文件会自动修改,有时它是位置,有时它是图像的数据或只是重新排列代码的顺序。一切仍然编译和工作正常,我只需要记住要恢复这些更改,否则我会不断地向我的存储库提出乱码。任何人都知道为什么会发生这种情况,也许是因为某些组件?

编辑:

例如,这个数据:

 <data name="connectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        somevalue
    </value>

自动更改为:

 <data name="connectToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        someothervalue
    </value>

并放在另一个地方。一切仍然正常,问题是这些更改显示在我的源代码控制中,所以我必须记得在我提交之前还原resx文件,除非我实际上对文件做了一些修改,然后我必须提交所有内容。

2 个答案:

答案 0 :(得分:5)

  

除非我实际对文件做了一些修改,否则我必须提交所有内容

当你被迫以某种方式提交.resx文件而不是将图像变成&#34; gibberish&#34;时,完全你不知道该做什么。抱怨只是不太可信,我假设真正的问题是.resx文件发生了变化,你不知道为什么。

.resx文件在没有任何明显原因的情况下进行更改的原因越来越普遍,只需在设计器中打开表单即可。特别是最近Windows 10变得越来越常见。根本原因是视频适配器的DPI(每英寸点数)设置。这种设置几十年来一直停留在100%(又名96 dpi),但廉价的高分辨率LCD面板正变得越来越普遍,迫使用户将缩放比例增加到125或150%以保持文字清晰。并为Win10安装程序选择更高的值。

这对UI设计有非常显着的影响,Form.AutoScaleMode属性也在设计时完成它的工作。 Visual Studio是dpiAware,因此设计器可以查看DPI更改。只要申报被宣布为dpiAware as well,就会保留所见即所得。非常重要的顺便说一句,最后使用VS2015 Update 1变得更容易了,Application Manifest File项目模板现在包含它。只需删除评论。

也会更改.resx文件内容。特别是对于MenuStrip,其TrayLocation被序列化为该文件。菜单项的OnImageScalingSizeChanged()方法在设计时运行。对于任何控件,如果表单的Localizable属性设置为True,则会将其Location和Size属性序列化为.resx文件。

识别这种最简单的方法是查看表单的Designer.cs文件:

  this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);

将此与全新Winforms项目上的相同属性分配进行比较。一个不同的值将使自动重新缩放以完成其工作并更改.resx文件。

不匹配的常见原因是在另一台机器上创建的设计。也许是较旧的一个。或者可能由另一个在不同DPI设置下运行其显示适配器的团队成员修改。如果团队成员没有相同的硬件,那么让每个人都同意通常并不那么简单。为每个人提供同样漂亮的显示器本来是一个很好的士气改善,只需要很少的钱:)也许你不应该那么努力,只需检查一下,这样你下次就不必提醒了。 / p>

答案 1 :(得分:0)

只需将这些文件添加到.gitignore文件即可。 (如果你使用的是git)

以下是我的看法:

**。娑 **。斌 **。OBJ **斌 ** OBJ