在VisualBasic学生学习了所有循环、条件语句和子例程之后,他们经常问的下一个问题是,“如何添加位图、.wav文件、自定义光标或其他一些特殊效果?”答案之一是资源文件。当您将资源文件添加到项目中时,它将被集成,以便在打包和部署应用程序时获得最大的执行速度和最小的麻烦。
使用资源文件不是在VB项目中包含文件的唯一方法,但它有真正的优势。例如,可以在PictureBox控件中包含位图,或使用mciSendString Win32 API。
Microsoft将资源定义为“与应用程序一起逻辑部署的任何不可执行的数据”
管理项目中资源文件的最简单方法是在项目属性中选择“资源”选项卡。您可以通过双击解决方案资源管理器中的“我的项目”或“项目”菜单项下的“项目属性”来打开此对话框。
使用资源文件增加了另一个优势:更好的全球化。资源通常包含在主程序集中,但.NET还允许您将资源打包到附属程序集中。通过这种方式,您可以实现更好的全球化,因为您只包含所需的附属程序集。微软给了每种语言一个代码。例如,英语的美国方言由字符串“en US”表示,法语的瑞士方言由“fr-CH”表示。这些代码识别包含特定于文化的资源文件的附属程序集。应用程序运行时,Windows会自动使用附属程序集中包含的资源,其区域性由Windows设置确定。
因为资源是VB.Net中解决方案的一个属性,所以可以像访问其他属性一样访问它们:使用My.resources对象按名称访问。为了举例说明,请检查此应用程序,它旨在显示亚里士多德的四个元素的图标:空气、地球、火和水。
首先,您需要添加图标。从项目属性中选择“资源”选项卡。通过从添加资源下拉菜单中选择添加现有文件来添加图标。添加资源后,新代码如下所示:
Private Sub RadioButton1_CheckedChanged( ... Handles MyBase.Load Button1.Image = My.Resources.EARTH.ToBitmap Button1.Text = "Earth" End Sub如果您使用的是Visual Studio,则可以将资源直接嵌入到项目程序集中。以下步骤可将图像直接添加到项目中:
然后,您可以在这样的代码中直接使用位图(其中位图是程序集中的第三个,索引号为2)。
Dim res() As String = GetType(Form1).Assembly.GetManifestResourceNames() PictureBox1.Image = New System.Drawing.Bitmap( _ GetType(Form1).Assembly.GetManifestResourceStream(res(2)))尽管这些资源作为二进制数据直接嵌入到主程序集或附属程序集文件中,但在Visual Studio中构建项目时,它们会被使用扩展名.resx的基于XML的文件格式引用。例如,下面是您刚刚创建的.resx文件的一个片段:
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="AIR" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\CLOUD.ICO;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data>因为它们只是文本XML文件,.resx文件不能直接由.NET framework应用程序使用。必须将其转换为二进制“.resources”文件,并将其添加到应用程序中。此作业由名为Resgen.exe的实用程序完成。您可能希望这样做以创建用于全球化的附属程序集。您必须在命令提示符下运行resgen.exe。
“资源概述”,微软,2015年。
...nction、sub和operator是一些类型的过程。 覆盖的关键领域 1.什么是VB中的函数-定义,功能2.什么是VB中的过程-定义,功能3.VB中函数和过程的区别-关键区别的比较 关键术语 函数,.NET框架,程序,VB 什么是vb中的函数(function in vb)? ...
...。 ASP.NET构建在公共语言运行库(CLR)上。这允许程序员使用任何支持的.NET语言编写ASP.NET代码。ASP.NET网页通常也称为Web窗体。它们包含静态(X)HTML标记。它还包含定义服务器端Web控件和用户控件的标记。这是开发人员放置网...
...VB发展而来的,但它与VB有着多方面的不同。例如,它不使用以前版本的visualbasic中使用的几种语法形式。与VB不同,VB.net完全符合公共语言规范(CLS)。 NET增加了各种功能和特性,如真正的面向对象继承(甚至跨语言对象继承...
...t非常有用。TryCast并没有抛出像DirectCast这样的错误,而是什么也不返回。通常的做法是在执行TryCast后不进行任何测试。 ctype 只有CType(以及其他“Convert”操作符,如CInt和CBool)将不具有继承关系的类型(如整数)转换为字符...
...命名(实际上是出于市场而非技术原因)造成了对它们是什么的大量混淆。 许多语言和应用程序以某种方式支持ActiveX,而Visual Basic对ActiveX的支持非常强大,因为它是Win32环境的基石之一。 注:Dan Appleman在其关于VB.NET的书中...
...返回-------- 添加的代码如下所示(VB.NET 2008): Class ResourceClass Implements IDisposable ' To detect redundant calls Private disposed As Boolean = False ' IDisposable Protected Overridable Sub Dispose( _ ByVal disposing As Boolean) ...
...组件的许多优点,而且所需的工作量要小得多。这就是为什么! 要了解创建完整的自定义组件需要做什么,请尝试以下实验: -&燃气轮机;在VB.NET中打开新的Windows应用程序项目。-&gt;将工具箱中的复选框添加到表单...
在VisualBasic学生学习了所有关于循环、条件语句和子例程等的知识之后,他们经常问的下一个问题是,“如何添加位图、wav文件、自定义光标或其他特殊效果?”答案之一是资源文件。当您使用VisualStudio资源文件添加文件时,它...
...一些解决方案并查看结果,您可以更好地了解解决方案是什么。“空白解决方案”生成一个文件夹,其中只有两个文件:解决方案容器和解决方案用户选项。如果使用默认名称,您将看到: 增加隐私 可以创建空白解决方案的...
...更改任何代码都不是一个好主意。如果您不知道自己在做什么,很有可能通过更改Microsoft生成的代码来破坏项目。 在VB.NET 1.0中,所有生成的代码仅通过包含在程序的一个区域部分来进行保护,在该区域中,只需单击一次,就...