C# Resources��Դ���。本站提示廣大學習愛好者:(C# Resources��Դ���)文章只能為提供參考,不一定能成為您想要的結果。以下是C# Resources��Դ���正文
1. Resource Basics
(1) Manifest Resources����Դ�嵥��
��Դ�ڱ����ڼ���ӵ��������Ҫ����ԴǶ�뵽��������뽫�ļ���ӵ���Ŀ�У��ļ����Զ���������Ŀ�ļ��е�Resources�ļ����С����ҪǶ�뵽��������ѡ���ļ����������ԡ����ɲ�������Build Action��Ϊ��Ƕ�����Դ����Ĭ��Ϊ�����ݡ���
һ������ΪǶ�����Դ�������ͻ��Ϊ��Դ�嵥�г���һ���֡�ÿһ���������Ǿ�̬�Ļ��Ƕ�̬�ģ������������ó����и�Ԫ�ر˴���ι��������ݼ��ϡ������嵥�Ͱ�����Щ����Ԫ���ݡ������嵥����ָ���ó��İ汾Ҫ��Ͱ�ȫ��ʶ���������Ԫ���ݣ��Լ�����ó��ķ�Χ�ͽ�������Դ��������������ȫ��Ԫ���ݡ�
(2) Naming Mainfest Resources
Ҫ�鿴һ���Ѿ���ȷǶ�뵽��Ŀ��������е��ļ�����������SDK���� ildasm.exe������ʵ���� MSIL �����������ܹ��������Mainfest��ͼ����ʾ���е�Ƕ����Դ��
����ildasm����ʾΪ .mresource ��ڣ���Դ������ʾ��ʽ���£�
defaultNamespace.folderName.fileName
defaultNamespace ��������Ŀ������ҳ���С�Ӧ�ó���Tabҳ���н��и��ġ�
(3) Loading Mainfest Resources
Ҳͨ��������ö���嵥����Ҫ���õ� System.Reflection.Assembly ��� GetMainifestResourceNames ���������⣬�����Լ����ض����͵ij������� Assembly ��ṩ�� GetAssembly��GetCallingAssembly��GetEntryAssembly �� GetExecutingAssembly �ȡ�
// Get this type's assembly Assembly asm =this.GetType().Assembly; // Enumerate the assembly's manifest resources foreach( string resourceName in asm.GetManifestResourceNames() ){ MessageBox.Show(resourceName); }
Type Ϊ System.Reflection ���ܵĸ���Ҳ�Ƿ���Ԫ���ݵ���Ҫ��ʽ��ʹ�� Type �ij�Ա��ȡ����������������Ϣ���繹�캯�����������ֶΡ����� (Property) ������¼����Լ������в�������ģ��ͳ���
��ʾij��������Ψһ�� Type ���������� Type �������õ��ҽ������DZ�ʾ��ͬ������ʱ����������ͬ�Ķ���������ʹ�òο���ʽ���Ƚ� Type ����Type ���ʾ���������������͡��ӿ����͡��������͡�ֵ���͡�ö�����͡����Ͳ������������Ͷ��壬�Լ����Ż��չ���ķ������͡�Object.GetType �������ر�ʾʵ�����͵� Type ����
���֪����Դ�����ƣ������ͨ�� Assembly ��ķ��� GetManifestResourceStream ��������ָ�����嵥��Դ����Դ���ƴ�Сд��У�������ȫ�ơ����磺
// Get this type's assembly Assembly asm =this.GetType().Assembly; // Get the stream that holds the resource // from the "ResourcesSample.Azul.jpg" resource // NOTE1: Make sure not to close this stream, // or the Bitmap object will lose access to it // NOTE2: Also be very careful to match the case // on the resource name itself Stream stream = asm.GetManifestResourceStream("ResourcesSample.Azul.jpg"); // Load the bitmap from the stream this.BackgroundImage =new Bitmap(stream);
(4) Mainfest Resource Namespaces
������ݸ� GetMainfestResourcesStream ���� һ��System.Type �����������ô����͵������ռ䵱��Ƕ����Դ��ǰ��һ���֣��磺
// Load the stream for resource "ResourcesSample.Azul.jpg" Stream stream = asm.GetManifestResourceStream(this.GetType(), "Azul.jpg");
Bitmap ��Ҳ����ֱ��װ��Ƕ�����Դ���磺
// Load image from "ResourcesApp.Azul.jpg" this.BackgroundImage =new Bitmap(this.GetType(), "Azul.jpg");
2. Strongly Typed Resources
���嵥��Դ�в�����������Ϣ����Ȼ�ļ�������չ������������Bitmap���Ǹ������ݱ������ж����͵ġ�
(1) Application Resources(.resx) Files
��Դ�ļ�(.resx)����Ҫ���þ��Ǽ�¼��Դ����Ӧ������Ϣ�����ڲ�����.NET�ض���XML������ResX����������Դ������Ϣ��һ���յ� .resx �ļ�Ҳ��42�����ݣ���������Ƿ�����Ϣ��������������������Ŀ��Ϣ��ÿ��������name��value, comment, type �� Multipurpose Internet Mail Extensions(MIME) type����Ȼ���ļ��ǻ����ı��ģ��������Ҫ�༭�����Ķ�����û���ͨ��VS2005����Դ�༭������ɡ�
.resx ��ʽ�е�����/ֵ���� XML �����д�����������ַ��������ֵ�����ַ�������ӵ� .resx �ļ���ʱ�����ַ��������Ʊ�Ƕ���� <data> ����У�����ֵ������ <value> ����ڣ�������ʾ����ʾ��
��һ�������뵽 .resx �ļ���ʱ��ʹ����ͬ�� <data> �� <value> �������������� <data> ���Ҫ�������ͻ� MIME ����˵����������˵�������������������������͡���������ɶ�����������ɣ��� MIME ����˵�����������洢�Ķ�������Ϣ�Ļ����� (Base64)��
(2) Managing Resources
��Դ�༭��֧��������Դ��
a. �ַ��� : �ڴ����ַ�����Դ�ġ����ơ�����ֵ���͡�ע�͡��е�������������ʾ�ַ�����
b. ͼ�� : ��ʾ����ͼ���ļ������� .bmp��.jpg �� .gif ��ʽ������Щ�ļ�������ʱ��Ϊ Bitmap �����������Ҳ������Ϊ Metafile ������ Windows ͼԪ�ļ���
c. ͼ��
d. ��Ƶ : ��ʾ�����ļ������� .wav��.wma �� .mp3 �ļ�������Щ�ļ���Ϊ�ֽ����鹫����
e. �ļ� : ��ʾ���ʺ����������κ��ļ�������ͼ�е�������Ϊ String �������ı��ļ���������Ϊ�ֽ����鹫���Ķ������ļ���
f. ���� : ��ʾ�����������֧���ַ������л������ͣ����磬Font��Enum��Color �� Point������������������������У������ơ��������͡�����ֵ���͡�ע�͡���
�����Դ��
����ͨ���Ϸš��˵�ѡ���������Դ��ͨ����Դ�༭����ӵ�.resx�ļ���������Դ�ļ�����ŵ���Ŀ�ļ����µ�Resources�ļ����£�������������������һ���Ѿ�������Ŀ�����Դ��ӵ�.resx�ļ��У��������Դ���ᱻ�ƶ�����Resources�ļ����£���Ϊ��Դ�༭����ͨ�����ļ���������������Դ�ļ���resx�ļ��������ʵ���嵥��Դ��������Ϣ��
ɾ����Դ��
ͨ����Դ�༭��ֻ�ܴ�.resx���Ƴ���������Դ��������ʵ��ɾ������Ϊ��ֻ�Ƕ���Դ��Ԫ���ݽ��в�������������������Դ�ļ����ַ������⣬��ֻ�ܱ�Ƕ�룩���������Ŀ��ɾ����Դ�ļ�������.resx�е���ӦԪ���ݻ��ڣ������ڱ���ʱ�ͻ���ֱ����쳣��
�༭��Դ�� ����ͨ����Դ�༭��ֱ�Ӵ���Ӧ�ı༭����
(3) Resource Persistance
������Դ��Ϊ�ļ��洢����Ŀ�У��ڱ����ڼ䣬����Щ�ļ���ȡ����Դ���ݣ�������ŵ�Ӧ�ó�����嵥�С�Ӧ�ó������Դ�ļ� (.resx) ֻ�洢ָ������ϵ��ļ������·�������ӡ�����Ƕ����Դ����Դ����ֱ���Զ��������ݵ��ı���ʾ��ʽ�洢�� .resx �ļ��С����κ�һ������£���Դ���ݶ������뵽��ִ���ļ��С�
ע��㣺�ַ�����Դ����Ƕ�����Դ�������ģ��ļ���Դ�������ӵ���Դ��Ҳ�����ġ�
�����Ƕ�����Դ�����ӵ���Դ֮�����ѡ��
-----------------------------------------------------------------
�ڶ�������£�Ӧ�ü��Ĭ�ϵ�������Դ�����ǣ�����Щ�����ѡ��Ƕ�����Դ����á�
Ƕ�����Դ��
�����Ҫ�ڶ����Ŀ֮�乲��Ӧ�ó�����Դ (.resx) �ļ�����Ƕ�����Դ�����ѡ�����磬�������һ��������˾�ձꡢ�̱���Ϣ���������ݵ�ͨ����Դ�ļ�����Ӧʹ��Ƕ�����Դ��������ֻ�踴�� .resx �ļ��������ø��ƹ�������Դ�����ļ�������ֱ�ӱ༭Ƕ�����Դ�������ͼ�༭Ƕ�����Դ����������յ�һ����Ϣ����ʾ��������ת��Ϊ���ӵ���Դ�Ա������б༭����ת���ǿ�ѡ�ģ����������ת�������뵼�����Dz����ⲿ�����н����ģ�Ȼ���䵼����Ŀ�С�
���ӵ���Դ��
�������Զ��ԣ����ӵ���Դ��Ĭ��ֵ������õ�ѡ��������Ŀ�ڲ�ֱ�ӱ༭��Դ�����ҿ��Ը�����Ҫ������ӻ��Ƴ���Դ��
-----------------------------------------------------------------
����ͨ��ָ����Դ��Persistance��������������������Ը�ΪǶ�����Դ�ļ�ɾ����������ʲôӰ�죬��ʱ����ٸĻ����ӷ�ʽ�������ResourcesĿ¼�����´�������Դ�ļ���
�������Դ�༭���¶���Դ���й������ᷢ����Դ��BuildAction�������ɲ��������Ϊ���ޡ�����ʵPersistance���Խ���������ڼ������ã�������Դ���ݶ������뵽��ִ���ļ��С�
(4) Using Typed Resources
* ֱ��ʹ��.resx�ļ�
���� ResXResourceReader ��������.resx �ļ���
�������ö�� XML ��Դ (.resx) �ļ�����������ȡ˳����Դ���ƺ�ֵ�ԣ������������ռ� System.Resources�����Ҫ��ȡ�ض���Ŀ������Ҫ�Ƚ��б���Ѱ�ҡ�
using( ResXResourceReader reader = new ResXResourceReader(@"C:\MyResources.resx") ) { foreach( DictionaryEntry entry in reader ) { string s =string.Format("{0} ({1})= '{2}'", entry.Key, entry.Value.GetType(), entry.Value); MessageBox.Show(s); } }
* ʹ�ñ����.resx ��Դ
�����Բ������ֲ�ͬ�ķ�ʽ������Դ�ļ������������Դ��ֻ�����ַ������ݣ�����ķ������ֶ������ı��ļ������������Դ������������ַ�����������ϣ��������봴�� .resx �ļ��� .resources �ļ���ֻ��.resources �ļ���ӦǶ���ڹ����������п����������С���Դ�ļ������� (Resgen.exe) ���ı� (.txt) �ļ��ͻ��� XML ����Դ (.resx) �ļ�ת���� .resources �ļ���
��Դ������ Resgen.exe :
�� .txt �ļ�ת��Ϊ .resources �ļ��������ǰ�װ�� ResourceWriter ��ʵ�ֵķ�����Resgen.exe ����װ ResourceReader����ʹ������ʹ�øù������� .resources �ļ�ת���� .txt �ļ���
������Ŀ��Ὣ.resx����Ƕ��ΪǶ����Դ������Դ�嵥��������Ŀȱʡ�����ռ�ΪA��rest�ļ�ΪB.resx�������Ƕ����Դ������Ϊ A.B.resources��������ildasm�в鿴�������Ķ�ȡ���� ResourceReader �࣬Ҳ��֧��������ʡ�
using( ResourceReader reader = new ResourceReader("MyResources.resources") ) { foreach( DictionaryEntry entry in reader ) { string s =string.Format("{0} ({1})= '{2}'", entry.Key, entry.Value.GetType(), entry.Value); MessageBox.Show(s); } }
��ʵ������ֱ��ͨ�����嵥��Դ���ķ��������� .resources �ļ���
Assembly asm = Assembly.GetExecutingAssembly(); // Load embedded .resources file using( Stream stream = asm.GetManifestResourceStream( this.GetType(), "MyResources.resources") ) { // Find resource in .resources stream using( ResourceReader reader =new ResourceReader(stream) ) { foreach( DictionaryEntry entry in reader ) { if( entry.Key.ToString() =="MyString" ) { // Display string resource value MessageBox.Show("MyString = "+ (string)entry.Value); break; } } } }
���϶���Ҫ���жಽ�������Ҳ�֧��������ʣ�����.NET�ṩ�� ResourceManager ����֧�ֶ���Դ��������ʡ�
(5) Resource Manager
ResourceManager ����Բ����������ض�����Դ�������ػ���Դ������ʱ�ṩ������Դ����֧����Դ���л�������ʵҲ���Ƕ�ResourceReader�ķ�װ������һ��Ƕ��.resource�ļ���ʼ����
Assembly asm =this.GetType().Assembly; ResourceManager resman =new ResourceManager("ResourcesSample.MyResources", asm);
ͨ�� ResourceManager �ķ��������÷���ʹ�� GetObject �� GetString ���ַ��������ض������Ե���Դ��
// Load ResourcesSample.MainForm.resources from MainForm.resx ResourceManager resman =new ResourceManager(this.GetType()); // Access the MyString string resource from the ResourceManager // (these two techniques are equivalent for strings) string s1 = (string)resman.GetObject("MyString"); string s2 = resman.GetString("MyString");
(6) ǿ������Դ��
Resource Manager �ṩ�˶���Դ�������ͷ���GetObject��������Դ����Ҫ��������ת��������VS2005��һ���Զ��幤�� ResXFileCodeGenerator �ṩ�˶��������Ľ���취����һ�� .resx �ļ�������ʱ��VS2005��Ӧ���Զ��幤�߽������һ����Ӧ�� .Designer.cs �ļ������ļ��ṩ��һ�����ֺ� .resx �ļ���ͬ���࣬����������������ռ�Ϊ defaultNamespace.projectPath��
namespace ResourcesSample { ///<summary> /// A strongly typed resource class, for looking up localized /// strings, etc. ///</summary> // This class was autogenerated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .resx file and then rerun ResGen // with the /str option, or rebuild your VS project. internalclass MyResources { static global::System.Resources.ResourceManager resourceMan; static global::System.Globalization.CultureInfo resourceCulture; internal MyResources() {} ///<summary> /// Returns the cached ResourceManager instance used by this /// class. ///</summary> internalstatic global:: System.Resources.ResourceManager ResourceManager { get { if( (resourceMan ==null) ) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager( "ResourcesSample.MyResources", typeof(MyResources).Assembly); resourceMan = temp; } return resourceMan; } } ///<summary> /// Overrides the current thread's CurrentUICulture property for /// all resource lookups using this strongly typed resource class. ///</summary> internalstatic global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } } }
�����Ͽ��Կ��� MyResource ���͵�����������
a. ��ͨ��һ��ResourceManager���͵������ṩ�˶�ResourceManager�ľ�̬���ʣ���û��Ҫд֮ǰ�Ĵ������ˣ� b. ͨ��һ��Culture�����ṩ��CultureInfo����ʵ�ֶԱ��ػ���Ϣ�ľ�̬���ʣ�
�ṩ��ÿ����Դ����ǿ���;�ֻ̬�����ԡ����ڲ�ʵ���У�ÿ�����Զ�����������ɵ���Դ�������йܵ�ResourceMananger��������ģ�
// Access strongly typed resources from MyResources.resx string myString = MyResources.MyString; Icon myIcon = MyResources.MyIcon;
(7) Designer Resources
VS2005�ṩ��������Ŀ����Դ���������Resources.resx �ļ��Ǵ���Ŀ������ҳ�����й���ģ����� VS2005������ŵ���Ŀ��Properties�ļ����С�������Ŀ�����.resx�ļ�ʱ��ResXFileCodeGenerator�����Զ�����Resources.Designer.cs��
namespace ResourcesSample.Properties {
...
internal class Resources {
...
�����������������Դ��MessageBox.Show(Properties.Resources.MyString);
��Ŀ���Զ�����һ�������������.resx �ļ����������� BackgroundImage �� Icon ����Դ��Ϣ�����Դ��ڿ��Դ�ѡ����Դ�༭��������ѡ���ʵ���ͼƬ��Դ�����ṩ�����ֵ���ͱ�����Դ�ķ�ʽ����Ϊ������Դ����Ϊ��Ŀ��Դ�ļ������ڴ��壬������Դ��Ƕ�뵽����������Զ�������.resx�ļ��в��ʹ�����������ѡ����Դ�������ֱ�ӽ�ͼƬ���뵽�������Դ�ļ��С�
���Ͼ��DZ��ĵ�ȫ�����ݣ�ϣ���Դ�ҵ�ѧϰ����������Ҳϣ����Ҷ��֧�ֽű�֮�ҡ�