设计者强制将资源嵌入表单中,而不是使用 Resources.resx?

2023-12-30

这个问题让我摸不着头脑!我会尽量简洁。

在高层次上:

问题是,尽管该项目运行良好并且代码对我来说看起来不错。每当我编辑和构建某些表单时,Visual Studio 都会重写*.Designer.cs文件以一种非常不可取的方式。

我非常有信心这些*.Designer.cs文件过去没有被编辑过(特别是自动生成的部分)。

更详细地说:

我们的项目使用自定义控件,其中一些继承自PictureBox。在存在这些控件的表单上,如果我查看*.Designer.cs文件,我要么看到Image属性未设置,或者Imageproperty 指的是存储在项目的 resx 文件中的图像,如下所示,这一切都很好。

this.customButton.Image = global::MyProject.Properties.Resources.buttonImage;

但是,如果我只是通过添加另一个控件(将另一个按钮拖到表单上)来修改此表单并构建项目,则 Visual Studio 会广泛编辑MyForm.Designer.cs and MyForm.resx文件,即使对于表单上未触及的现有控件也是如此。看起来它嵌入了控件中所需的所有图像MyForm.resx文件,然后在MyForm.Designer.cs如下:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MyForm));
this.customButton.Image = ((System.Drawing.Image)(resources.GetObject("customButton.Image")));

这显然不是我想要的。为什么 Visual Studio 现在希望表单使用本地资源,而不是嵌入到项目中的资源Resources.resx文件是否像修改表单之前乐意做的那样?如果我去找设计师,查看其属性customButton,并尝试将 Image 属性设置为项目资源文件中的图像,它允许,但下次单击时,它将立即恢复为嵌入在 MyForm.resx 中的本地引用。

有什么想法为什么会发生这种情况吗?


我在以下人员的帮助下解决了这个问题另一个问题 https://stackoverflow.com/questions/3619341/how-do-i-get-the-windows-forms-designer-to-use-resources-from-external-assembly/7853944#7853944

基本上,尽管我已经看到了一些将应用程序的资源集中在单个程序集中的建议,但这似乎是一个糟糕的选择。 VS 设计器只是不喜欢访问当前程序集外部的资源,虽然它可以这样做,但它也会更改您的代码,通过嵌入这些资源将它们引入当前程序集中,从而阻碍您将资源保留在当前程序集中。单个组件。

我基本上不得不回去将资源保留在使用它们的程序集中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计者强制将资源嵌入表单中,而不是使用 Resources.resx? 的相关文章

随机推荐