gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:30:06 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com