程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# Resources��Դ���

C# Resources��Դ���

編輯:C#入門知識

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��ĵ�ȫ�����ݣ�ϣ���Դ�ҵ�ѧϰ����������Ҳϣ����Ҷ��֧�ֽű�֮�ҡ�

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved