visual-studio - 如何让 Windows 窗体设计器使用来自外部程序集的资源?

标签 visual-studio winforms resources windows-forms-designer

我在 Windows 窗体项目中的控件上使用的资源文件中有一些资源(在本例中为图像)。 Visual Studio Resource Selection 对话框对从资源文件中选择图像没有很好的支持,除非它们位于特定位置,但您可以直接编辑设计器文件,这很好用;应用程序编译并正确运行,Windows 窗体设计器足够智能,不会弄乱我手工编辑的代码。

// in an assembly named ResourceConsumer
this.button1.Image = global::ResourceConsumer.Properties.Resources.Close32x32;

现在我想将这些资源移动到外部程序集,以便多个应用程序可以使用它们。我可以设置一个程序集以毫无问题地公开其资源(只要我使用的是 Visual Studio 2008 或更高版本),并且这工作正常。当我更改设计器代码以从其新位置引用图像时,代码编译并正确运行,但现在 Windows 窗体设计器在生成代码时更改我的代码;它将图像的二进制文件嵌入到本地资源文件中并从那里引用它。
// ResourceProducer is an external assembly containing resources
this.button1.Image = global::ResourceProducer.Properties.Resources.Exit32x32;

由 Windows 窗体设计器更改为:
this.button1.Image = ((System.Drawing.Image)(resources.GetObject("button1.Image")));

Windows 窗体设计器似乎了解从同一程序集中提取资源,但不了解从外部提取资源。有什么方法可以让 Windows 窗体设计器允许我使用来自外部程序集的资源?

最佳答案

我有确切的 same problem并且可能有替代方法,具体取决于您的代码库。如果已修改以引用特定资源的属性位于自定义控件上,则您可以添加 [[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]属性(覆盖或隐藏它们,如有必要),设计者将不理会它们。

但是,如果属性位于基本 UI 元素(例如 Form.BackgroundImage)上,那么您还必须覆盖或隐藏它们,我不确定这有多可取。

关于visual-studio - 如何让 Windows 窗体设计器使用来自外部程序集的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619341/

相关文章:

javascript - 如何通过 Javascript 将图像添加到按钮?

visual-studio - 使用 Visual Studio 2010 查看有关错误的完整 WCF 响应

Visual Studio 2012 中的 C++ 单元测试

c# - MVP 依赖注入(inject)

winforms - Winform treeview 排序属性很慢

c# - 将 Visual Studio 资源文件放在 'Resources' 以外的文件夹中?

visual-studio - 创建 Visual Studio 解决方案模板 - 多个项目

c# - 使用 visual-studio 在 C#.net 中玩按钮

c# - 如何将 Windows 窗体设计器支持添加到自定义控件?

HTTP:部分更新资源(接受空字符串)的模式?