【发布时间】:2019-12-26 18:23:22
【问题描述】:
我有一个 Visual Studio 2017 解决方案,它分为几个 C#-WinForm 应用程序。
为了拥有类似的用户界面,我将所有图标/图片放入一个项目 (ResourceProject) 中,并将资源文件标记为公开。
通过直接编辑表单的 .Designer 文件,我现在可以通过声明将图像显式分配给 ResourceProject 的资源文件中的某些内容
button1.Image = ResourceProject.Properties.Resources.DemoPic
但是,设计师有时会用
覆盖它button1.Image = ((System.Drawing.Image)resources.GetObject("button1.Image")));
并创建一个本地资源文件,其中嵌入了图像。
这正是我一开始就想避免的,因为我以后可能想轻松更改一些图标,并将这些更改直接传播到所有项目。
避免这种情况的唯一方法似乎是不在设计器文件中分配图像,而是在实际表单文件中以其他方法分配图像。
有没有其他方法可以解决这个问题?
【问题讨论】:
-
您确实需要避免接触表单的设计器:这不是您的事。如果您使用不直接属于项目的资源,请避免使用 PropertyGrid。在 Form 的构造函数中分配共享资源。构建仅资源
dll是另一种选择。 -
当分配在设计时运行时也可能发生这种情况。使用 DesignMode 属性阻止它执行。
-
您不应该更改 Designer.cs 文件,它是自动生成的,并且您在该文件中所做的任何更改都将在您下次更改表单中的某些内容时替换为自动生成的代码。
-
按照我在答案中分享的步骤,可以在不更改设计器文件的情况下共享设计时支持的资源。
标签: c# .net winforms windows-forms-designer embedded-resource