winforms 从代码中获取表单的资源(resx文件)

v64noz0r  于 2023-10-23  发布在  其他
关注(0)|答案(3)|浏览(132)

如果我有一个表单Frm1.cs,它使用了一些图标、图像或其他资源,这些资源会存储在表单的resx文件(Frm1.resx)中。
我的简单问题是如何从代码中访问这些资源?
作为一种变通方法,我可以将这些资源存储在Project资源文件中,它们将通过Properties.Resources.resourcename提供。但是,类似的语法不适用于存储在窗体资源文件中的资源。
在寻找解决方案时,我遇到了几个ResourceManager类的引用,但无法找到使用它来访问表单资源的方法。

bvk5enib

bvk5enib1#

访问本地表单资源的方法是通过ResourceManager的示例。假设你在一个名为Frm1的表单中有两个PictureBox:

var resources = new ResourceManager(typeof(Frm1));
var image = (Bitmap)resources.GetObject("pictureBox1.Image");

pictureBox2.Image = image;

希望这可以帮助你…

jhkqcmku

jhkqcmku2#

如果使用visual studio设计器添加资源,则会获得一个具有静态属性的类Resources来访问这些资源。
要访问:

this.pictureBox1.Image = Properties.Resources.MyResourceImage;
9bfwbjaz

9bfwbjaz3#

基于Harold Coppoolse的answer,Visual Studio(来自2022社区)在访问任何给定窗体的属性时都有一些很好的自动化。

编辑资源文件

对于在Visual Studio中创建的每个窗体,都应该有一个与之关联的.resx生成沿着(例如,如果插入了具有Text属性的项)。当您在设计器工具中打开.resx文件时,有一个**访问修饰符:*选项。将其更改为您的语言中最严格的权限(应该没有理由使用Public),这将在.resx文件下生成一个FormName .Designer. 代码扩展名 * 文件。

后台发生了什么?

在后台,Visual Studio使用ResGen.exe生成.resx文件附带的强类型资源类。这是在Custom Tool Namespace.resx文件属性指定的命名空间中创建一个类,其中:

  • 无参数构造函数,可用于示例化强类型资源类。
  • 一个静态(C#)或共享(Visual Basic)只读ResourceManager属性,该属性返回管理强类型资源的ResourceManager示例。
  • 静态区域性属性,允许您设置用于资源检索的区域性。默认情况下,它的值为null,这意味着使用当前UI区域性。
  • .resources文件中每个资源的一个静态(C#)或共享(Visual Basic)只读属性。属性的名称是资源的名称。

这意味着,在代码中,您只需使用*Namespace**FormClassName* . *ResourceName*访问您需要的任何资源。您不需要额外的代码。

相关问题