`
jiasongmao
  • 浏览: 680972 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Visual C# 资源文件编程--使用资源文件

    博客分类:
  • .NET
阅读更多
本文将接着上篇文章的话题来探讨资源文件另外一个问题,在Visual C#如何使用资源文件。在上一篇文章中,我们已经成功的创建了一个名称为"My.resources"的资源文件。这个资源文件中包含有一个图标资源,在文件中的名称为"demo.ico",若干个图片资源和一个字符串资源,在文件中的名称为"MyStr"。我们将以上一篇文章创建的此资源文件为对象,结合一个具体的程序例子来看一下用Visual C#如何使用资源文件。

一.本文程序设计和运行的软件环境:

(1).微软公司视窗2000服务器版

(2)..Net FrameWork SDK Beta 2

二.程序设计中的一些概念和理论:

    程序设计时涉及到的概念和理论主要是二种变量的相互转换。这就是二种变量就是所谓的实值类型变量(Value Type Variable)和参考类型变量(Reference Type Variable)。而二者之间的相互转换,在Visual C#中被称为装箱(Boxing)和出箱(Unboxing)。所谓装箱就是把实值类型变量转换成参考类型变量的过程,反之就是出箱。那么什么类型的变量是参考类型的变量,什么类型的变量又是实值类型变量呢?这二者之间有什么区别么?在Visual C#中的参考类型就是泛指这些类型,如:Object、Class、Interface、Delegate、String、Array等。这些类型定义的变量就是参考类型变量。而实值类型就是平常的平常使用的整型、布尔型、枚举型等,由这些类型定义的变量就是实值类型变量。他们之间的最大区别是参考类型变量是指向实体对象的指针,而实值类型变量就是实在的实体对象。由于装箱和出箱是一个概念性很强的操作过程,详细介绍需要很大的篇幅。而这超出了本文探讨的主要范畴。所以本文只介绍和程序相关的操作即出箱。具体的操作步骤,将在下一届结合程序来介绍。

三.程序设计的思路已经重要步骤的解决方法:

    (1).如何在程序编译的时候中嵌入资源。资源文件和程序是二个独立的文件,要把资源文件嵌入到最后生成的程序中,需要在编译的时候加上"/resource"命令,这个命令可以简写为"/res"。在本文中程序的名称为"use.cs",资源文件的名称为"My.resources",则把资源嵌入程序的编译命令如下:

Csc.exe /res:My.resources use.cs

(2).如何在程序管理资源文件中的资源:

    在.Net FrameWork SDK这提供了一个关于资源文件创建和使用的名称空间--System.Resources。在这个名称空间中有一个Class为ResourceManager,这个Class的主要作用就是管理并使用资源文件。Visual C#是通过这个类来管理并使用嵌入程序中的资源文件中的资源。下列代码就是定义一个ResourceManager类来管理嵌入程序资源文件中的资源:

ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;

(3).如何在程序中使用资源文件中的资源:

    在上一篇文章中,我们已经了解到在创建资源文件的时候,使用了AddResource ( )方法来加入资源,他的语法中的第一个参数是用户可以定义的字符串,这个字符串就是资源在资源文件的唯一标识,在程序设计中,就是通过这个唯一标识符来使用某个资源的。那么如何在程序中通过这个标识符来得到所需资源?这就要使用到ResourceManager类中的GetObject()和GetString()方法。这二个方法作用是获得指定的资源。下面是这二个方法的语法:

object GetSting(String)
object GetObject(String)

    其中的"String"就是资源在资源文件中的那个唯一标识符。细心的读者可能已经注意到,这二个方法的返回值都是一个Object类型的变量,也就是一个参考类型的变量,而在程序中的字符串或者图象等,是一个实值类型变量。这就需要进行转换,而这种转换就是上面所说的装箱和出箱。下列代码是从资源文件中提取字符串、图象和图标资源:

提取字符串资源:

String s = ( ( String ) rm.GetString ( "MyStr" ) ) ;

提取图标资源:

Icon icoDemo = ( ( Icon ) rm.GetObject ( "demo.ico" ) ) ;

提取图象资源:

Image a = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;

四.结合一个程序例子来看一下,资源文件的具体使用方法:

    下面的程序例子所使用的资源文件是上一篇文章中创建的资源文件"My.resources",程序中定义了三个Lable组件,其中的二个的作用是显示资源文件中图象资源,另外一个的作用是显示资源文件中字符串资源,程序的图标是取自资源文件中的图标资源。下面是程序的源代码:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Resources ;
using System.Reflection ;
public class Form1 : Form
{
private Label lblOK ;
private Label lblCancel ;
private System.ComponentModel.Container components = null ;
private Label lblResource ;
public Form1 ( )
{
//初始化窗体中的组件
InitializeComponent ( ) ;
}
//清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void InitializeComponent ( )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK = new Label ( ) ;
this.lblCancel = new Label ( ) ;
this.lblResource = new Label ( ) ;
this.SuspendLayout ( ) ;

this.lblOK.BackColor = System.Drawing.Color.White ;
//使用资源文件中的图象资源
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
this.lblOK.Location = new System.Drawing.Point ( 24 , 40 ) ;
this.lblOK.Name = "lblOK" ;
this.lblOK.Size = new System.Drawing.Size ( 75 , 23 ) ;
this.lblOK.TabIndex = 0 ;
this.lblOK.Click += new System.EventHandler ( this.lblOK_Click ) ;
this.lblOK.MouseEnter += new System.EventHandler ( this.lblOK_MouseEnter ) ;
this.lblOK.MouseLeave += new System.EventHandler ( this.lblOK_MouseLeave ) ;
//出箱
//使用资源文件中的图象资源
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-off.png" ) ) ) ;
this.lblCancel.Location = new System.Drawing.Point ( 152 , 40 ) ;
this.lblCancel.Name = "lblCancel" ;
this.lblCancel.Size = new System.Drawing.Size ( 75 , 23 ) ;
this.lblCancel.TabIndex = 1 ;
this.lblCancel.Click += new System.EventHandler ( this.lblCancel_Click ) ;
this.lblCancel.MouseEnter += new System.EventHandler ( this.lblCancel_MouseEnter ) ;
this.lblCancel.MouseLeave += new System.EventHandler ( this.lblCancel_MouseLeave ) ;

this.lblResource.Location = new System.Drawing.Point ( 88 , 8 ) ;
this.lblResource.Name = "lblResource" ;
this.lblResource.TabIndex = 2 ;
//出箱
//使用资源文件中的字符串资源
this.lblResource.Text = ( ( String ) rm.GetString ( "MyStr" ) ) ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
this.ClientSize = new System.Drawing.Size ( 240 , 101 ) ;
this.Controls.Add ( lblResource ) ;
this.Controls.Add ( lblCancel ) ;
this.Controls.Add ( lblOK ) ;
//出箱
//使用资源文件中的图标资源
Icon icoDemo = ( ( Icon ) rm.GetObject ( "demo.ico" ) ) ;
this.Icon = icoDemo ;
this.Name = "Form1" ;
this.Text = "Visual C#中使用资源文件!" ;
this.ResumeLayout ( false ) ;

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private void lblOK_MouseEnter ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-on.png" ) ) ) ;
}

private void lblOK_MouseLeave ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-off.png" ) ) ) ;
}

private void lblOK_Click ( object sender, System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblOK.Image = ( ( Image ) ( rm.GetObject ( "ok-down.png" ) ) ) ;
}

private void lblCancel_MouseEnter ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-onr.png" ) ) ) ;
}

private void lblCancel_MouseLeave ( object sender , System.EventArgs e )
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-off.png" ) ) ) ;
}

private void lblCancel_Click(object sender, System.EventArgs e)
{
ResourceManager rm = new ResourceManager ( "Images" , Assembly.GetExecutingAssembly ( ) ) ;
this.lblCancel.Image = ( ( Image ) ( rm.GetObject ( "cancel-over.png" ) ) ) ;
}
}

五.总结:

    至此我们已经完成了在Visual C#资源文件方面编程的全部内容,其中的主要内容就是创建资源文件和使用资源文件二大方面,我想通过这二篇文章的介绍,你对资源文件应该有了一个比较全面的认识了吧!
转载地址:http://www.gissky.com/Develop/ShowArticle.Asp?Sid=21&ID=1522
分享到:
评论

相关推荐

    Visual C#高级编程范例---谭桂华(PDF和PDG)

    《Visual C#高级编程范例》是一本专为C#开发者设计的深入学习书籍,作者谭桂华通过实例解析的方式,旨在帮助读者掌握使用Visual C# .NET进行应用程序开发的各种技术和策略。这本书不仅覆盖了C#语言的基础知识,还...

    Microsoft Visual C# 2005 Express Edition - Build A Program Now

    《Microsoft Visual C# 2005 Express Edition - Build A Program Now》是针对初学者的一份教程,旨在帮助用户快速入门编程,特别是使用C#语言和Microsoft的Visual Studio开发环境。Visual C# 2005 Express Edition是...

    Visual C# 2008程序设计-电子教案+习题答案+源代码-曹静

    《Visual C# 2008程序设计》是由曹静编著的一本深入浅出的教程,涵盖了C#编程的基础到高级主题。该资源包包含了电子教案、习题答案以及源代码,为学习者提供了全面的学习材料。接下来,我们将详细探讨这些知识点。 ...

    数字图像处理--Visual C#.NET编程与实验 光盘

    总的来说,《数字图像处理--Visual C#.NET编程与实验》提供了理论与实践相结合的学习体验,是学习数字图像处理和C#.NET编程的宝贵资源。通过解压并利用光盘中的内容,学习者可以深入探索图像处理的世界,为未来在...

    Visual C#.Net技术内幕-配书CD_ROM

    《Visual C#.Net技术内幕-配书CD_ROM》是一本深度探讨C#编程语言与.NET框架结合应用的专业书籍。在Microsoft的.NET平台上,C#语言以其简洁、高效和面向对象的特点,成为开发Windows应用程序和Web应用程序的重要工具...

    c#资源文件使用方法

    3. **Visual C#资源文件编程**: 在Visual C#中,资源文件的编程包括创建和使用两部分。创建资源文件可以使用Visual Studio的“资源”视图,这里可以添加、编辑和删除各种类型的资源。使用资源则涉及在代码中引用...

    《Visual C# .NET精彩编程实例集锦》

    总之,《Visual C# .NET精彩编程实例集锦》是C#程序员的宝贵资源,无论是初学者还是经验丰富的开发者,都能从中受益匪浅。通过阅读和实践书中的实例,读者可以全面提高自己的C#编程技能,更好地利用.NET框架进行软件...

    《Visual C# .NET精彩编程实例集锦》源代码

    《Visual C# .NET精彩编程实例集锦》是一本深入探讨C# .NET编程实践...这些实例涵盖了文件操作的方方面面,是学习和巩固C# .NET文件系统编程的宝贵资源。在实践中不断演练,将使你对文件系统的理解和运用更加得心应手。

    Visual C#.NET 应用编程150例.rar

    《Visual C#.NET 应用编程150例》等教程和资源的出现,无疑为广大学习者提供了一套结构完整、内容丰富的学习工具包,让他们能够更加全面和深入地掌握C#.NET编程技术。对于初学者而言,这是一条快速入门的捷径;对于...

    visual c#.net 应用编程150例

    《Visual C#.NET 应用编程150例》是一本专门为C#初学者准备的教程,...总的来说,《Visual C#.NET 应用编程150例》是一本全面而实用的学习资源,对于渴望在.NET平台上进行C#开发的人来说,无疑是一份宝贵的参考资料。

    Visual C#.NET应用编程150例

    《Visual C#.NET应用编程150例》是一本深入探讨C#编程实践的书籍,旨在帮助开发者掌握C#在.NET框架下的应用技巧。通过150个精心设计的实例,该书涵盖了C#编程的各个方面,从基础语法到高级特性的应用,为读者提供了...

    Visual C#.NET网络编程

    ### Visual C#.NET网络编程知识点概述 #### 一、引言 在《Visual C#.NET网络编程》这一系列文章中,作者旨在为初学者提供一套基础的网络编程指南。考虑到作者自述在网络编程领域的经验有限,因此提供的内容更多侧重...

    Visual C#经典游戏编程开发 源代码已优化

    在本文中,我们将深入探讨使用Visual C#进行经典游戏编程开发的主题。Visual C#是一种强大的编程语言,由Microsoft开发,特别适用于Windows平台上的应用程序和游戏开发。它集成了.NET框架,提供了丰富的类库和工具,...

    精通Visual C# 2005 -语言基础、数据库开发、Web开发(全部)

    《精通Visual C# 2005 - 语言基础、数据库开发、Web开发》是一部全面讲解C#编程的教程,涵盖了C#的基础知识、数据库应用以及Web开发等多个方面。本书旨在帮助开发者深入理解和掌握C#这门强大的编程语言,通过实践性...

    Visual C# 2005网络编程技术与实践 光盘

    《Visual C# 2005网络编程技术与实践》是一本深入探讨使用C#进行网络编程的专业书籍,光盘中包含的相关资源旨在辅助读者更好地理解和应用书中的理论知识。这本书主要关注C#语言在网络开发领域的应用,涵盖了从基础...

    Visual C# 2005文件IO与数据存取秘诀(程序范例)

    《Visual C# 2005 文件IO与数据存取秘诀》是一本专注于探讨C#编程语言在处理文件输入输出(IO)以及数据存储方面的专著。由台湾微软的资深专家编写,这本书深入浅出地讲解了如何在C# 2005环境下有效地进行文件操作和...

    Visual C#时尚编程百例 配套光盘

    《Visual C#时尚编程百例》是一本针对C#编程语言深入浅出的实践教程,其配套光盘包含了丰富的学习资源,旨在帮助读者通过实例掌握C#编程的精髓。光盘中的文件很可能是源代码、项目文件、示例程序、教学视频等,以...

    Visual C#.NET编程精粹150例

    《Visual C#.NET编程精粹150例》是一本针对C#编程语言在.NET框架下的实战指南。这本书涵盖了从基础到进阶的各种编程实践,旨在帮助初学者和有一定经验的开发者巩固和提升C#编程技能。通过150个精心挑选的实例,读者...

    C# 如何使用多个资源文件

    在C#编程中,资源文件是用于存储应用程序中使用的各种数据,如文本、图像、音频或任何其他可本地化的元素。资源文件可以帮助我们实现应用程序的本地化,使其能够适应不同地区的用户需求。本文将深入探讨如何在C#项目...

Global site tag (gtag.js) - Google Analytics