2011-02-16 149 views
3

我试图了解资源。在VS当我创建的项目:
-there是Form1中Form1.resx中 -there是Resources.resx属性Form1资源vs项目资源

我不知道该用哪一个。显然我不能使用Form1.resx。当我尝试在那里添加某些东西时,我会收到警告,说它可能会搞乱这个项目。另外,我无法访问它。 如果我使用属性下的Resources.resx,我可以使用Properties.Resources。(filename)轻松访问那里的文件。 这两者之间还有什么区别? Form1.resx有什么好处? 谢谢

回答

0

Form1.resx是为表单定义的,它定义了它作为控件的作用。当您使用VS设计器对UI进行更改时,您也不应该尝试手动编辑这一个,因为它会被重新生成。

Resources.resx用于整个项目的全局(公共)资源。通常意味着分享的东西!

+0

哦,所以Form1.resx是由设计师生成的,不是吗? – FlyBoy 2011-02-16 08:21:52

0

Form1.resx非常适合将图形对象直接嵌入到Form1代码文件中。这种方式很容易将您的表单剪切并粘贴到其他项目中。另外,如果您创建另一个称为Form2的Form1副本,则可以对其中一个进行更改,而不必担心影响其他表单的更改。 Resources.resx的工作方式恰恰相反。如果您在Resources.resx中更改了资源,则所有使用该资源的类都将被更新。例如,如果您有文件路径资源并且您更改了路径,则引用该资源的所有类都将获得更新的路径。

0

当你在Visual Studio中使用resx文件时,要格外小心!

当您尝试更改/添加/编辑/删除表单的关卡资源时,您很可能会崩溃您的项目。

你最好使用项目的级别资源文件。

有几种类型的资源,如字符串,图像,音频,图标,文件等

项目级别的资源是共享资源,有用的 - 主要是图形 - 所有的形式中:

你从项目菜单/ myProject的属性/资源/添加现有文件菜单项导入图形一次。

警惕的是一旦你添加了一个资源,并用你的项目范围内的资源,你不应该从资源文件是内部消除某些你不要再使用它删除,否则资源将被删除,但不会引用它,并且您将得到编译时错误,甚至更糟糕的是,运行时错误。

同样,imageList控件在窗体的级别嵌入图形。但是这些不能在表单之间共享,所以如果你认为你要重新使用一个图形,你最好把它作为一个全局资源添加到应用程序 - 项目级别。

此外,imagelist非常难以维护 - 进化。

若要将现有表单复制到新的,在同一个项目或另一个项目中,请勿复制/粘贴formxxx.vb文件。 同样,请勿将resx文件从一个项目复制/粘贴到另一个项目。

这里是相当麻烦的过程中,你应该使用:

1 - 为了一个形式复制到同一个项目:

提供没有自定义窗体的水平资源(由您添加的): 创建一个新的空白表单并使其与原始表单的大小相同(以及其他所需的属性)。是的,手动。

从原始窗体的设计类型Ctrl + A中选择所有控件,并将它们复制到新窗体中。

他们会保留他们的名字和属性。

对代码执行相同操作:复制/粘贴。 注重删除后导入1号线:公共类myOriginalForm

2 - 形成(S)复制到另一个项目,应先确保所有项目的级别的资源是相同的。而不是通过从资源文件夹中复制个别资源!

相反,小心使用添加现有资源菜单项导入新项目中的资源。您一次可以导入多个项目。

这样,您的资源将被正确引用。