重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c#
站在用户的角度思考问题,与客户深入沟通,找到福绵网站设计与福绵网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、申请域名、虚拟主机、企业邮箱。业务覆盖福绵地区。
C#(读做 "C sharp",中文译音“夏普”)是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,并定于在微软职业开发者论坛(PDC)上登台亮相.C#是微软公司研究员Anders Hejlsberg的最新成果.C#看起来与Java有着惊人的相似;它包括了诸如单一继承,界面,与Java几乎同样的语法,和编译成中间代码再运行的过程.但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角.
在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现.然后我将介绍C#和它与Java,c,c++的相似之处.其次我将讨论一些存在于Java和C#之间的高层次的,和基础的差别.我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略.目前,C#和.NET还只能以C#语言规则,以及Windows 2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型).
微软c#语言定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点.C#在设计者从C++继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java.C#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:"这是对Java的反击."
C#更象Java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C++获得了提高.
Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用Java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话).C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样,"我发现所有这些都是渐进的.如果C#不存在,我们总能回到Java或C和C++.这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响."
C#从Java继承而来的特点
类:在C#中类的申明与Java很相似.这是合理的因为经验告诉我们Java模型工作得很好.Java的关键字import已经被替换成using,它起到了同样的作用.一个类开始执行的起点是静态方法Main().下面的Hello World程序展示了基本的形式:
using System;
class Hello
{
static void Main()
{
Console.WriteLine("Hello, world");
}
}
在这个例子中,System这个名字指向一个包括了基本C#实用类集合的命名空间(namespace).这个命名空间包括了Console类,它在这个例子中被用来输出一个字符串.类可以是抽象的和不可继承的:一个被申明成abstract的类不能被实例化;它只能被用做一个基类.C#关键字sealed就象Java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类.界面:就象在Java中一样,一个界面是一组方法集合的抽象定义.当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法.一个单一的类可以实现几个界面.也许以后会出现一些微妙的差别,但是这个特点看起来与Java相比没有变化.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是C#中的关键字.错误处理:如Java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.NET框架进行自动内存垃圾回收.
C#从C和C++继承的特点
编译:程序直接编译成标准的二进制可执行形式.但C#的源程序并不是被编译成二进制可执行形式,而是一中中间语言,类似于JAVA字节码。如果前面的Hello World程序被保存成一个文本文件并被命名为Hello.cs,它将被编译成命名Hello.exe的可执行程序.
结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象C++,C#结构体与类是不同的而且不支持继承.但是,与Java相同的是,一个结构体可以实现界面.
预编译:C#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:
#define
#undef
#if
#elif
#else
#endif
#warning
#error
#line []
没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源代码替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名.
操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被被重载的单目操作符是:
+ - ! ~ ++ -- true false
能够被重载的二元运算符是:
+ - * / % | ^ == != = =
C#独有的特点
C#最引人入胜的地方是它和Java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了C#实现的和Java不同的地方或者Java根本没有的特点.
中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多--如果不是大多数的话--程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一个符合CLS的版本--等语言编写的程序)将在性能上超过"解释性的"Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Java和C#在性能上相对相同.象"C#是编译语言而Java是解释性的,"之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.
命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.
基本的数据类型:C#拥有比C,C++或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.
两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.
参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.
与COM的集成:C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个以存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.NET语言子类化.
索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.
public class ListBox: Control
{
private string[] items;
public string this[int index]
{
get
{
return items[index];
}
set
{
items[index] = value;
Repaint();
}
}
}
可以用一个循环器来匿名引用字符串内部数组成员,就象下面这样:
ListBox listBox = ...;
listBox[0] = "hello";
Console.WriteLine(listBox[0]);
代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明.
1 生成txt文件。
DimSaveFileDialog1AsNewSaveFileDialog() '创建一个保存对话框
SaveFileDialog1.Filter ="txt files (*.txt)|*.txt" '设置扩展名
IfSaveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OKThen '如果确定保存
My.Computer.FileSystem.WriteAllText(SaveFileDialog1.Filename, Textbox1.Text,False) '保存文本,False表示不追加文本,直接覆盖其内容
EndIf
原文链接:
PublicClassSimpleCalculatorInheritsSystem.Windows.Forms.Form#Region"Windows窗体设计器生成的代码"PublicSubNew()MyBase.New()'该调用是Windows窗体设计器所必需的。InitializeComponent()'在InitializeComponent()调用之后添加任何初始化EndSub'窗体重写处置以清理组件列表。ProtectedOverloadsOverridesSubDispose(ByValdisposingAsBoolean)IfdisposingThenIfNot(componentsIsNothing)Thencomponents.Dispose()EndIfEndIfMyBase.Dispose(disposing)EndSub'Windows窗体设计器所必需的PrivatecomponentsAsSystem.ComponentModel.IContainer'注意:以下过程是Windows窗体设计器所必需的'可以使用Windows窗体设计器修改此过程。'不要使用代码编辑器修改它。FriendWithEventsLabel1AsSystem.Windows.Forms.LabelFriendWithEventsTextBox1AsSystem.Windows.Forms.TextBoxFriendWithEventsButton1AsSystem.Windows.Forms.ButtonFriendWithEventsButton2AsSystem.Windows.Forms.ButtonFriendWithEventsButton3AsSystem.Windows.Forms.ButtonFriendWithEventsButton4AsSystem.Windows.Forms.ButtonFriendWithEventsButton5AsSystem.Windows.Forms.ButtonFriendWithEventsButton6AsSystem.Windows.Forms.ButtonFriendWithEventsButton7AsSystem.Windows.Forms.ButtonFriendWithEventsButton8AsSystem.Windows.Forms.ButtonFriendWithEventsButton9AsSystem.Windows.Forms.ButtonFriendWithEventsButton10AsSystem.Windows.Forms.ButtonFriendWithEventsButton11AsSystem.Windows.Forms.ButtonFriendWithEventsButton12AsSystem.Windows.Forms.ButtonFriendWithEventsButton13AsSystem.Windows.Forms.ButtonFriendWithEventsButton14AsSystem.Windows.Forms.ButtonFriendWithEventsButton15AsSystem.Windows.Forms.ButtonFriendWithEventsButton16AsSystem.Windows.Forms.ButtonPrivateSubInitializeComponent()Me.Label1=NewSystem.Windows.Forms.LabelMe.TextBox1=NewSystem.Windows.Forms.TextBoxMe.Button1=NewSystem.Windows.Forms.ButtonMe.Button2=NewSystem.Windows.Forms.ButtonMe.Button3=NewSystem.Windows.Forms.ButtonMe.Button4=NewSystem.Windows.Forms.ButtonMe.Button5=NewSystem.Windows.Forms.ButtonMe.Button6=NewSystem.Windows.Forms.ButtonMe.Button7=NewSystem.Windows.Forms.ButtonMe.Button8=NewSystem.Windows.Forms.ButtonMe.Button9=NewSystem.Windows.Forms.ButtonMe.Button10=NewSystem.Windows.Forms.ButtonMe.Button11=NewSystem.Windows.Forms.ButtonMe.Button12=NewSystem.Windows.Forms.ButtonMe.Button13=NewSystem.Windows.Forms.ButtonMe.Button14=NewSystem.Windows.Forms.ButtonMe.Button15=NewSystem.Windows.Forms.ButtonMe.Button16=NewSystem.Windows.Forms.ButtonMe.SuspendLayout()''Label1'Me.Label1.Location=NewSystem.Drawing.Point(16,16)Me.Label1.Name="Label1"Me.Label1.Size=NewSystem.Drawing.Size(48,16)Me.Label1.TabIndex=0Me.Label1.Text="结果:"''TextBox1'Me.TextBox1.Location=NewSystem.Drawing.Point(64,8)Me.TextBox1.Name="TextBox1"Me.TextBox1.Size=NewSystem.Drawing.Size(120,21)Me.TextBox1.TabIndex=1Me.TextBox1.Text=""''Button1'Me.Button1.Location=NewSystem.Drawing.Point(200,8)Me.Button1.Name="Button1"Me.Button1.Size=NewSystem.Drawing.Size(56,24)Me.Button1.TabIndex=2Me.Button1.Text="清空"''Button2'Me.Button2.Location=NewSystem.Drawing.Point(48,56)Me.Button2.Name="Button2"Me.Button2.Size=NewSystem.Drawing.Size(24,24)Me.Button2.TabIndex=3Me.Button2.Text="1"''Button3'Me.Button3.Location=NewSystem.Drawing.Point(88,56)Me.Button3.Name="Button3"Me.Button3.Size=NewSystem.Drawing.Size(24,24)Me.Button3.TabIndex=4Me.Button3.Text="2"''Button4'Me.Button4.Location=NewSystem.Drawing.Point(136,56)Me.Button4.Name="Button4"Me.Button4.Size=NewSystem.Drawing.Size(24,24)Me.Button4.TabIndex=5Me.Button4.Text="3"''Button5'Me.Button5.Location=NewSystem.Drawing.Point(48,88)Me.Button5.Name="Button5"Me.Button5.Size=NewSystem.Drawing.Size(24,24)Me.Button5.TabIndex=6Me.Button5.Text="4"''Button6'Me.Button6.Location=NewSystem.Drawing.Point(88,88)Me.Button6.Name="Button6"Me.Button6.Size=NewSystem.Drawing.Size(24,24)Me.Button6.TabIndex=7Me.Button6.Text="5"''Button7'Me.Button7.Location=NewSystem.Drawing.Point(136,88)Me.Button7.Name="Button7"Me.Button7.Size=NewSystem.Drawing.Size(24,24)Me.Button7.TabIndex=8Me.Button7.Text="6"''Button8'Me.Button8.Location=NewSystem.Drawing.Point(48,120)Me.Button8.Name="Button8"Me.Button8.Size=NewSystem.Drawing.Size(24,24)Me.Button8.TabIndex=9Me.Button8.Text="7"''Button9'Me.Button9.Location=NewSystem.Drawing.Point(88,120)Me.Button9.Name="Button9"Me.Button9.Size=NewSystem.Drawing.Size(24,24)Me.Button9.TabIndex=10Me.Button9.Text="8"''Button10'Me.Button10.Location=NewSystem.Drawing.Point(136,120)Me.Button10.Name="Button10"Me.Button10.Size=NewSystem.Drawing.Size(24,24)Me.Button10.TabIndex=11Me.Button10.Text="9"''Button11'Me.Button11.Location=NewSystem.Drawing.Point(48,152)Me.Button11.Name="Button11"Me.Button11.Size=NewSystem.Drawing.Size(24,24)Me.Button11.TabIndex=12Me.Button11.Text="0"''Button12'Me.Button12.Location=NewSystem.Drawing.Point(176,56)Me.Button12.Name="Button12"Me.Button12.Size=NewSystem.Drawing.Size(24,24)Me.Button12.TabIndex=13Me.Button12.Text="+"''Button13'Me.Button13.Location=NewSystem.Drawing.Point(176,88)Me.Button13.Name="Button13"Me.Button13.Size=NewSystem.Drawing.Size(24,24)Me.Button13.TabIndex=14Me.Button13.Text="-"''Button14'Me.Button14.Location=NewSystem.Drawing.Point(176,120)Me.Button14.Name="Button14"Me.Button14.Size=NewSystem.Drawing.Size(24,24)Me.Button14.TabIndex=15Me.Button14.Text="*"''Button15'Me.Button15.Location=NewSystem.Drawing.Point(176,152)Me.Button15.Name="Button15"Me.Button15.Size=NewSystem.Drawing.Size(24,24)Me.Button15.TabIndex=16Me.Button15.Text="/"''Button16'Me.Button16.Location=NewSystem.Drawing.Point(88,152)Me.Button16.Name="Button16"Me.Button16.Size=NewSystem.Drawing.Size(72,24)Me.Button16.TabIndex=17Me.Button16.Text="计算"''SimpleCalculator'Me.AutoScaleBaseSize=NewSystem.Drawing.Size(6,14)Me.ClientSize=NewSystem.Drawing.Size(264,190)Me.Controls.Add(Me.Button16)Me.Controls.Add(Me.Button15)Me.Controls.Add(Me.Button14)Me.Controls.Add(Me.Button13)Me.Controls.Add(Me.Button12)Me.Controls.Add(Me.Button11)Me.Controls.Add(Me.Button10)Me.Controls.Add(Me.Button9)Me.Controls.Add(Me.Button8)Me.Controls.Add(Me.Button7)Me.Controls.Add(Me.Button6)Me.Controls.Add(Me.Button5)Me.Controls.Add(Me.Button4)Me.Controls.Add(Me.Button3)Me.Controls.Add(Me.Button2)Me.Controls.Add(Me.Button1)Me.Controls.Add(Me.TextBox1)Me.Controls.Add(Me.Label1)Me.Name="SimpleCalculator"Me.Text="简单计算器"Me.ResumeLayout(False)EndSub#EndRegionPrivateSubTextBox1_TextChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)EndSubPrivateSubTextBox1_TabStopChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)EndSubPrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.ClickDimbtnAsButton'按钮类型的变量btn=sender'把产生该事件的按钮对象赋值给btnTextBox1.Text=TextBox1.Text+btn.Text'把该按钮的Text属性值连接到TextBox1中EndSubPrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton3.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton4_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton4.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton5_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton5.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton6_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton6.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton7_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton7.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton8_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton8.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton9_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton9.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton10_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton10.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton11_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton11.ClickDimbtnAsButtonbtn=senderTextBox1.Text+=btn.TextEndSubPrivateSubButton12_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton12.ClickDimbtnAsButtonbtn=sender'在文本框的Text属性后连接一个空格、本按钮的Text属性值和一个空格TextBox1.Text=TextBox1.Text+""+btn.Text+""EndSubPrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.ClickTextBox1.Text=""'清空文本框EndSubPrivateSubButton13_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton13.ClickDimbtnAsButtonbtn=senderTextBox1.Text=TextBox1.Text+""+btn.Text+""EndSubPrivateSubButton14_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton14.ClickDimbtnAsButtonbtn=senderTextBox1.Text=TextBox1.Text+""+btn.Text+""EndSubPrivateSubButton15_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton15.ClickDimbtnAsButtonbtn=senderTextBox1.Text=TextBox1.Text+""+btn.Text+""EndSubPrivateSubButton16_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton16.Click'发生错误转移到标号“ErrorPro”指定的行去执行错误处理程序OnErrorGoToErrorProDimrAsDecimal'保存计算结果的变量DimtAsString=TextBox1.Text'用于保存文本框中的算术表达式DimspaceAsInteger=t.IndexOf("")'搜索空格位置,如果没有空格,返回值为0'字符串的取子符方法,第二个参数小于0,则将产生错误号为5的异常,即过程参数不正确Dims1AsString=t.Substring(0,space)'通过取子串方法获得第一个运算数DimopAsString=t.Substring(space+1,1)'通过取子串方法获得运算符Dims2AsString=t.Substring(space+3)'通过取子串方法获得第二个运算数Dimarg1,arg2AsIntegerarg1=Val(s1):arg2=Val(s2)SelectCaseopCase"+":r=arg1+arg2Case"-":r=arg1-arg2Case"*":r=arg1*arg2Case"/":r=arg1/arg2CaseElseMsgBox("输入的运算符有误!")ExitSubEndSelectTextBox1.Text=CStr(r)'显示结果ExitSub'退出过程ErrorPro:'错误处理程序块SelectCaseErr.NumberCase6'除数为零时,或运算溢出时的错误号MsgBox("算术运算溢出!",,"溢出提示")TextBox1.Focus()ExitSubCase5'Substring过程的参数不符合要求的错误号MsgBox("必须输入运算符和第二个运算数!",,"运算数少")ExitSubCaseElse'其它情况显示错误号和错误原因MsgBox("错误号为"Err.NumberChr(10)Chr(13)"错误原因:"Err.Description)ExitSubEndSelectEndSubEndClass
首先在form1上建立三个命令按钮,分别为command1(打开预启动的文件);command2(设定时间的按钮);第三个command3(即可启动)按钮可有可无;一个label1用来显示你预打开的文件名的路径;一个lbltime用来显示现在的时间;还有一个commondialog,它在工程菜单的部件中,你可把它加到工具箱中再开始使用;关于对话框你不必自己建,只要从应用程序向导中添加即可;一个timer,它的interval=500。 其次在form1的属性中设置为:startupposition=2-centerscreen和maxbutton=false;label1的属性中设置为:alignment=2-center。 外观大致是如图所示: 下面我们开始编程: OptionExplicit DimAlarmTime '申明变量 --------- PrivateSubCommand1_Click() Calldialog '调用dialog子程序 EndSub -------- PrivateSubCommand2_Click() AlarmTime=InputBox(“请输入你想设定的时间,例如(19:12:00)",“小闹钟") IfAlarmTime=“"ThenExitSub IfNotIsDate(AlarmTime)Then MsgBox“你所输入的不是时间格式,请重试!",,“Wrong" Else AlarmTime=CDate(AlarmTime) EndIf '判断输入的是否可转换成time格式 'isdate函数是判断输入的是否可转换成date格式 EndSub -------------- PrivateSubCommand3_Click() Calldeng '调用deng子程序 EndSub --------------- PrivateSubForm_Click() frmAbout.Show '显示关于对话框 EndSub ------------- PrivateSubForm_Load() Command3.Enabled=0 AlarmTime=“" '初始化时command3为不可用的 EndSub --------------- PrivateSubForm_Resize() IfWindowState=1Then mintime else caption=“小闹钟" EndIf '如果窗口被最小化,则调用mintime程序 EndSub --------------- PrivateSubmintime() Caption=Format(Time,“longTime") '使用长时间格式来显示时间 EndSub --------------- PrivateSubTimer1_Timer() IflblTime.CaptionCStr(Time)Then lblTime.Caption=Time EndIf '显示时间每秒钟的变化 IfTime=AlarmTimeThen Calldeng EndIf '判断如果现在的时间超过了设定的时间,则调用deng子程序 IfWindowState=1Then IfMinute(CDate(Caption))Minute(Time)Then mintime EndIf EndIf '最小化时显示时间每分钟的变化 EndSub ------------- Subdialog() CommonDialog1.Flags=cdlCFBoth CommonDialog1.ShowOpen Label1.Caption=CommonDialog1.filename IfLabel1“"Then Command3.Enabled=-1 Else ExitSub EndIf '把打开的文件名给于label1 '如果label1不为空时,则command3即可用 EndSub -------------- Subdeng() Dimss ss=Shell(Label1.Caption,1) End '启动指定的文件,并且结束小闹钟程序 EndSub 最后在about对话框中要提的是:在form_load中app.title表示你的应用程序的名字;app.major、minor、revision是关于应用程序的版本信息;lblDescription.Caption用于对本程序的一些说明描述之类的话;lblDisclaimer.Caption用于版权信息或警告等。 好了,至此我们已完成了一个简单的VB程序的编写,希望你能设计出更好的闹钟程序来!