把swf做为内嵌资源使用,试试
解决方案 »
- 菜鸟问题:用C#编写C/S三层结构的系统
- 怎样利用web Servers 读取XML的CDATA的内容?(高手来啊,急!!!!)
- FORM Timer的问题???判断文本输入内容
- 如何遍历硬盘上的所有文件夹,并加载到treeView中?
- 如何让CHECKBOXLIST的某几项不可选呢,各位帮忙解决一下,谢谢!
- C#里treeview显示问题
- 求正则表达式,思归在吗????
- 谁遇到这个问题?
- 急求关于C#绘图方面的资料.
- C#中SqlCommand干什么用的
- 高分请教:请问如何在richtextbox中加入背景图片及在程序而不是属性设置中改变richtextbox的字体大小?
- 问一个很简单的COOKIE问题
也许我学的太浅
但在我看来似乎是荒唐!
谁说不可以???资源可以是任何文件,任何文件需要的时候都可以取出来!
ResourceManager 类可以查找区域性特定的资源,当本地化资源不存在时提供代用资源,并支持资源序列化。通过 ResourceManager 的方法,调用方可使用 GetObject 和 GetString 两种方法访问特定区域性的资源。默认情况下,这些方法返回某区域性的资源,该区域性由执行调用的线程的当前区域性设置决定。(有关详细信息,请参见 Thread.CurrentUICulture。)调用方可使用 ResourceManager.GetResourceSet 方法获取表示特定区域性的资源的 ResourceSet,并忽略区域性代用规则。然后可以使用 ResourceSet 来按名称访问为该区域性本地化的资源。理想情况下,应该为每种语言创建资源,或者至少为每种语言的有意义子集创建资源。资源文件名遵循“基名称.区域性名称.resources”的命名约定,其中基名称是应用程序名或类名(取决于期望的详细程度)。CultureInfo 的 Name 属性用来确定区域性名称。非特定语言区域性的资源(由 InvariantCulture 返回)应该命名为“基名称.resources”。例如,假定某个程序集在基名称为 "MyResources" 的资源文件中有几个资源。这些资源文件的名称将为 "MyResources.ja-JP.resources"、"MyResources.de.resources"、"MyResources.zh-CHS.resources" 或 "MyResources.fr-BE.resources" 等,它们分别包含用于日语、德语、简体中文和法语(比利时)的资源。默认资源文件应该命名为 MyResources.resources。区域性特定的资源文件通常打包在每种区域性的附属程序集内。默认资源文件应该在主程序集内。现在假定已创建 ResourceManager 来表示具有此基名称的资源。通过使用 ResourceManager,可以调用 GetResourceSet(new CultureInfo ("ja-JP"), TRUE, FALSE),从而获取封装 "MyResources.ja-JP.resources" 的 ResourceSet。或者,如果已知 "MyResources" 包含名为 "TOOLBAR_ICON" 的资源,则可通过调用 GetObject("TOOLBAR_ICON", new CultureInfo("ja-JP")),获取针对日本进行了本地化的资源的值。尽管不是 ResourceManager 的最基本用法所严格要求的,但是公开发布的程序集应使用 SatelliteContractVersionAttribute 来支持在不重新部署附属程序集的情况下控制主程序集的版本,并使用 NeutralResourcesLanguageAttribute 来避免查找可能根本不存在的附属程序集。有关附属程序集版本支持的更多信息,请参见检索附属程序集中的资源。若要了解有关创建附属程序集的更多信息,请参见创建附属程序集。有关 Windows 窗体对话框的本地化方面的帮助,请参见 Microsoft .NET Framework SDK 中的 Windows 窗体资源编辑器 (Winres.exe) 工具。若要了解有关设置和创建资源的更多信息,请参见应用程序中的资源。警告 使用 ASP.NET 应用程序中的独立 .resources 文件将破坏 XCOPY 部署,这是由于资源在由 ReleaseAllResources 方法显式释放之前一直处于锁定状态。如果要将资源部署到 ASP.NET 应用程序中,则应该将 .resources 编译到附属程序集中。
警告 标记为私有的资源只有在它们所在的程序集中才是可访问的。因为附属程序集中不包含任何代码,所以通过任何机制都不能使用它的私有资源。因此,附属程序集中的资源应始终为公共的,以便可从主程序集中访问它们。嵌入到主程序集中的资源(无论是私有的还是公共的)对于主程序集来说都是可访问的。
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemresources.htmms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemresourcesresourcewriterclasstopic.htmResourceWriter 提供 IResourceWriter 接口的默认实现。
使用 AddResource 方法将资源指定为名称和值对。资源名在用于查找时是区分大小写的,但是,为更易于支持创作工具和帮助消除错误,ResourceWriter 将不允许使用仅大小写不同 .resources 文件名。
若要创建一个资源文件,请用唯一的文件名创建 ResourceWriter,至少调用 AddResource 一次,再调用 Generate 将该资源文件写入磁盘,然后调用 Close 关闭该文件。如果需要,调用 Close 将隐式 { Generate } 该文件。
写入资源的顺序无须与添加时的顺序一样。
示例
[Visual Basic, C#, C++] 下面的示例将若干个字符串写入到 myResources.resources 文件中。
[Visual Basic]
Imports System
Imports System.ResourcesPublic Class WriteResources
Public Shared Sub Main()
' Creates a resource writer.
Dim writer As New ResourceWriter("myResources.resources")
' Adds resources to the resource writer.
writer.AddResource("String 1", "First String")
writer.AddResource("String 2", "Second String")
writer.AddResource("String 3", "Third String")
' Writes the resources to the file or stream, and closes it.
writer.Close()
End Sub
End Class
[C#]
using System;
using System.Resources;
public class WriteResources {
public static void Main(string[] args) {
// Creates a resource writer.
IResourceWriter writer = new ResourceWriter("myResources.resources");
// Adds resources to the resource writer.
writer.AddResource("String 1", "First String"); writer.AddResource("String 2", "Second String"); writer.AddResource("String 3", "Third String"); // Writes the resources to the file or stream, and closes it.
writer.Close();
}
}
[C++]
using namespace System;
using namespace System::Resources;
void main(char** argc, int argv) { // Creates a resource writer.
IResourceWriter* writer = new ResourceWriter(S"myResources.resources"); // Adds resources to the resource writer.
writer->AddResource(S"String 1", S"First String"); writer->AddResource(S"String 2", S"Second String"); writer->AddResource(S"String 3", S"Third String"); // Writes the resources to the file or stream, and closes it.
writer->Close();
}Visual Basic, C#, C++] 下面的代码示例将在控制台上显示“myResources.resources”文件的内容:[Visual Basic]
Imports System
Imports System.Resources
Imports System.CollectionsPublic Class ReadResources
Public Shared Sub Main()
' Opens a resource reader and get an enumerator from it.
Dim reader As New ResourceReader("myResources.resources")
Dim en As IDictionaryEnumerator = reader.GetEnumerator()
' Goes through the enumerator, printing out the key and value pairs.
While en.MoveNext()
Console.WriteLine()
Console.WriteLine("Name: {0}", en.Key)
Console.WriteLine("Value: {0}", en.Value)
End While
reader.Close()
End Sub
End Class[C#]
using System;
using System.Resources;
using System.Collections;
public class ReadResources { public static void Main(string[] args) { // Opens a resource reader and gets an enumerator from it.
IResourceReader reader = new ResourceReader("myResources.resources");
IDictionaryEnumerator en = reader.GetEnumerator();
// Goes through the enumerator, printing out the key and value pairs.
while (en.MoveNext()) {
Console.WriteLine();
Console.WriteLine("Name: {0}", en.Key);
Console.WriteLine("Value: {0}", en.Value);
}
reader.Close();
}
}[C++]
using namespace System;
using namespace System::Resources;
using namespace System::Collections;
void main(char** argv, int argc) { // Opens a resource reader and gets an enumerator from it.
IResourceReader* reader = new ResourceReader(S"myResources.resources");
IDictionaryEnumerator* en = reader->GetEnumerator();
// Goes through the enumerator, printing out the key and value pairs.
while (en->MoveNext()) {
Console::WriteLine();
Console::WriteLine(S"Name: {0}", en->Key);
Console::WriteLine(S"Value: {0}", en->Value);
}
reader->Close();