vb编写2分钟倒计时的程序
- 格式:doc
- 大小:49.00 KB
- 文档页数:4
VB定时器控件的应用实例与研究[摘要] VB中的定时器控件具有灵活多变、易于控制等特点,在应用程序的开发中,利用VB定时器控件可以实现时间控制、随机控制、动画设计和游戏设计等制作。
VB定时器控件和其他控件相结合,可以制作既灵活又实用的应用程序。
[关键词] VB 定时器控制TimerVB中的定时器控件(Timer)是一个在程序运行时不可见的控件,在程序运行时,每隔若干时间(通过Interval属性设置)执行一次Timer事件中的相应代码。
定时器控件最核心的属性是Enabled和Interval属性。
利用Enabled可以设置定时器控件是否可用,其取值只有逻辑值True和False两种。
利用Interval属性可以设置定时器控件激活Timer事件的时间间隔,其单位为毫秒,其取值范围为0-65535,当取值为0时,定时器控件不可用。
由于定时器控件具有灵活多变、易于控制等特点,可以应用于时间控制、随机控制、动画制作、游戏制作等应用程序的开发中。
一、时间控制1.整点播时器在实际工作中,有时需要利用计算机实现整点报时的功能,以提醒用户及时知晓当前时间。
整点播时器的功能是:若当前系统时间为整点时(即当前时刻的分钟数和秒数均为0),弹出对话框提示“现在是北京时间X点整”。
在设计整点报时器时,定时器控件Timer1的Interval属性应设置为1000(1000毫秒=1秒),Timer1的timer事件代码如下:Private Sub Timer1_Timer()If Second(Time()) = 0 And Minute(Time()) = 0 Thena = MsgBox(“现在是北京时间” + Str(Hour(Time())) + “点整”)End IfEnd Sub2.倒计时器在实际生活中,有时需要通过倒计时的方法,让观众随时了解当前距正式活动(比赛)的时间差。
比如奥运会倒计时、开幕式倒计时等等。
倒计时器的功能是:先在文本框text1中输入倒计时的时间(形式为hh:mm:ss),当单击“开始倒计时”按钮command1时,每隔一秒钟,文本框text1中的时间倒退一秒钟,直到时间为0(00:00:00)时,弹出对话框提示“时间到”。
vb6.0时间控件timer详解通过引发Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。
语法Timer说明Timer 控件用于背景进程中,它是不可见的************************以下是他的属性****************Enabled 属性返回或设置一个值,该值用来确定一个窗体或控件是否能够对用户产生的事件作出反应。
语法object.Enabled [= boolean]Enabled 属性的语法包含下面部分:部分描述object 对象表达式,其值是“应用于”列表中的一个对象。
如果object 被省略,则与活动窗体模块相联系的窗体被认为是object。
boolean 一个用来指定object 是否能够对用户产生的事件作出反应的布尔表达式。
设置boolean 的设置为:设置描述True (缺省)允许object 对事件作出反应。
False 阻止object 对事件作出反应。
Enabled 属性示例该例子使一个CommandButton 控件有效而不管TextBox 控件是否包含文本。
要试用此例,先将下面的代码粘贴到带有CommandButton 和TextBox 控件的一个窗体的声明部分,然后按下F5 键并在文本框中随意输入一些内容。
Private Sub Form_Load ()Text1.Text = "" ' 清除文本框的内容。
Command1.Caption = "Save" ' 在按钮上放置标题。
End SubPrivate Sub Text1_Change ()If Text1.Text = "" Then '查看文本框是否为空。
Command1.Enabled = False '使按钮无效。
ElseCommand1.Enabled = True '使按钮有效。
下课倒计时软件的设计作者:任江明来源:《电脑知识与技术》2013年第20期摘要:在计算机屏幕上显示出下课剩余时间,时间到时弹出对话框,随之播放选择的音乐。
关键词:倒计时;播放音乐;对话框中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)20-4618-02对于一名老师来说,把握下课的时间很重要,上课过程中需要了解一下时间,从而掌握教学进度。
那么如何在电脑桌面上显示上课剩余时间呢?我利用VB编写了一个倒计时的程序。
功能主要有:1)能实时显示上课剩余时间;2)在结束时能够弹出对话框来提醒;3)能选择音乐文件,在时间结束时播放。
4)窗口较小,不会影响其它软件的使用和显示。
需解决的难题是:如何使程序运行窗口和结束时的弹出窗口总是在最前面。
1 程序的编写程序中涉及到如下几个控件:一个标签(用于显示倒计时的数字),一个下拉列表框(用于选择从倒计时的初始值,默认值是45分钟),两个按钮(一个用于开始计时和取消计时,另一个用于选择打开音乐文件),一个定时器(产生timer事件),一个通用对话框(当action属性为1或用showopen方法时产生“打开”对话框,选择所需要的音乐文件),一个媒体播放控件windowsmediaplayer(用于播放音乐)。
通用对话框不是标准控件,只是一种ActiveX控件,在VB编程中需要通过选择“工程”→“部件”命令加载Microsoft Common Dialog Control 6.0部件,工具箱上会出现通用对话框图标。
如下是这个程序所涉及的代码:先建立一个通用模块,用于设置运行时的程序窗口在最前面的函数。
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long…下面是各个控件的代码Dim t As Date …定义一个全局变量tPrivate Sub Form_Load()SetWindowPos Me.hWnd, -1, 0, 0, 0, 0,3 …设置窗口总在最前面 For i = 1 To 99Combo1.AddItem iNext iEnd SubPrivate Sub Command1_Click()…用于设置和取消计时的按钮If Command1.Caption = "设置" Thent = Time …记录点击设置时的时间Timer1.Interval = 1000 …计时器开始运行WindowsMediaPlayer1.Controls.stop …媒体播放器停止播放Combo1.Enabled = FalseCommand1.Caption = "取消"ElseCombo1.Enabled = TrueCommand1.Caption = "设置"End IfEnd SubPrivate Sub Command2_Click()…选择音乐的按钮CommonDialog1.Action = 1WindowsMediaPlayer1.URL = CommonDialog1.FileName …播放音乐的文件就是通过通用对话框选择的文件。
数字钟本单元课程有助于学生巩固前面课程所掌握的一些操作方法和部分基础概念。
一,复习启动与退出VB的方法二,复习VB窗口的组成:标题栏、菜单栏、标准工具栏、工具箱、工程资源管理器、属性窗口、窗体布局、代码窗口、对象窗口……图1 “数字钟”程序在VB设计状态下的画面三,本实例对象选取及其初始状态设计。
本例连同窗体在内,一共用到四个对象。
以下是这些对象的名称和需要设置的属性(利用属性窗口设置)。
窗体(Form,用于显示信息、盛放其他控件)1,名称frmClock(代码设计中用于区别于其他窗体)2,Caption 数字钟(在窗体标题栏中显示的文字)3,BorderStyle 1-Fixed Single(边框样式1,运行时不能改变窗体大小)4,窗体的大小可以手工拖放窗体边框来调整,此处按以下数据设置Height 2130 (高度)Width 3945(宽度)5,在屏幕上的位置可以在窗口布局区手工拖放来调整,此处按以下数据设置Left 7860(窗体左边框离屏幕左边的距离)Top 6150(窗体上边框离屏幕上边的距离)●标签(LABEL控件,可以显示文字等信息)本例有两个LABEL控件第一个LABEL控件用来显示日期1,名称lblDate(代码设计中用于区别于其他控件)2,Alignment 2-Center(文字居中显示)3,AutoSize True(根据所显示的内容需要,自动调整本身大小尺寸) 4,BorderStyle 0-None(无边框)5,Caption 空白无字6,Font 宋体、小三号(标签上所显示文字的字体和字号)7,标签的大小可以手工拖放标签边框来调整,此处按以下数据设置Height 300(高度)Width 165(宽度)8,在窗体上的位置可以在窗体上手工拖放来调整,此处按以下数据设置Left 1845(控件左边框离窗体左边框的距离)Top 240 (控件上边框离窗体上边框的距离)第二个LABEL控件用来显示时间1,名称lblTime(代码设计中用于区别于其他控件)2,Alignment 2-Center(文字居中显示)3,AutoSize True(根据所显示的内容需要,自动调整本身大小尺寸) 4,BorderStyle 1-Fixed Single(有边框)5,Caption 空白无字6,Font 宋体、初号(标签上所显示文字的字体和字号)7,标签的大小可以手工拖放标签边框来调整,此处按以下数据设置Height 900(高度)Width 495(宽度)8,在窗体上的位置可以在窗体上手工拖放来调整,此处按以下数据设置Left 1680(控件左边框离窗体左边框的距离)Top 720 (控件上边框离窗体上边框的距离)●计时器(Timer)控件1,名称Timer1(代码设计中用于区别于其他控件)2,Interval 1000(1000毫秒,即1秒,两次调用本控件的间隔时间)) 3,在窗体上的位置可以在窗体上手工拖放来调整,此处按以下数据设置Left 3360(控件左边框离窗体左边框的距离)Top 1200(控件上边框离窗体上边框的距离)以上工作完成后,可得以下画面:图2 设计状态下的窗体、控件画面上海市南洋模范中学陆慈晖VB 教案选——数字钟 3 四,代码的设计(红色文字是注释,可不输入) 1,先完成以下代码,然后运行,注意观察显示时间之前有何异常,分析其原因。
vb延时函数
在vb 中,可以使用Thread.Sleep 函数来实现延时。
该函数会使当前线程暂停指定的时间长度。
以下介绍的是vb延时函数:
以下是示例代码:
vb
Imports System.Threading
' 延时函数
Sub Delay(milliseconds As Integer)
Thread.Sleep(milliseconds)
End Sub
' 使用延时函数
Sub Main()
Console.WriteLine("开始延时")
Delay(3000) ' 延时3 秒
Console.WriteLine("延时结束")
End Sub
在上述代码中,Thread.Sleep 函数用于使程序暂停执行一段时间(以毫秒为单位)。
通过调用Delay 子例程并传入希望延时的毫秒数,可以在程序中实现相应的延时效果。
总结:以上介绍的是vb延时函数。
请注意,由于Thread.Sleep 会阻塞当前线程,因此在实际应用中,尤其是在UI 程序中,长时间的延时操作可能导致界面无响应,应慎重使用。
对于需要定时操作或异步处理的情况,建议使用定时器或异步任务来代替延时函数。
visual basic延时语句Visual Basic是一种面向对象的编程语言,它提供了一种延时执行的方法。
延时语句是在运行时暂停程序的执行一段时间,然后继续执行下面的代码。
下面是一些常用的Visual Basic延时语句:1. 使用Sleep函数进行延时:Sleep函数是Windows API的一部分,可以使程序暂停执行指定的时间,单位是毫秒。
以下是使用Sleep函数进行延时的示例代码:```System.Threading.Thread.Sleep(1000)```2. 使用Timer控件进行延时:Timer控件是Visual Basic中的一个组件,它可以设置一个定时器,当定时器到达指定的时间间隔时触发一个事件。
以下是使用Timer 控件进行延时的示例代码:```vbPrivate Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.TickTimer1.Enabled = False' 执行需要延时的代码Timer1.Enabled = TrueEnd Sub```3. 使用DoEvents函数进行延时:DoEvents函数是Visual Basic的一个内置函数,它会让程序暂停执行并处理操作系统的消息队列。
以下是使用DoEvents函数进行延时的示例代码:```vbDim endTime As Date = Now.AddSeconds(1)Do While Now < endTimeDoEvents()Loop```4. 使用Timer控件和Sleep函数组合进行延时:可以结合使用Timer控件和Sleep函数来实现更精确的延时效果。
以下是使用Timer控件和Sleep函数组合进行延时的示例代码:```vbPrivate Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.TickTimer1.Enabled = False' 执行需要延时的代码System.Threading.Thread.Sleep(1000)Timer1.Enabled = True```5. 使用Application.DoEvents函数进行延时:Application.DoEvents函数是Visual Basic中的一个内置函数,它会让程序暂停执行并处理操作系统的消息队列。
在VB中实现延时(等待)的几种方法2007-02-28 10:02在程序流程中经常要延时一段时间后再继续往下执行,在VB中常用的有以下几种方法(因为Timer控件打乱了程序的流程所以一般不用它):1.使用Windows API函数Sleep新建一个工程,添加一个TextBox控件和一个CommandButton控件,再将以下代码复制到代码窗口'声明:Private Declare Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long)Private Sub Command1_Click()Text1 = sleep beginSleep 3000Text1 = sleep endEnd Sub按F5执行,按下Command1按钮,程序停止执行,3秒钟内不对用户的操作做出反应,并且Text1里的内容并没有发生改变.这是怎么回事呢?原来,Sleep函数功能是将调用它的进程挂起dwMilliseconds毫秒时间,在这段时间内,此进程不对用户操作做出反应,程序中虽然将Text1的Text属性改成Sleep begin,但还没等完成对屏幕的更新进程就被挂起了,对用户来说程序象是死机一样。
所以这种方法虽然简单,但并不适用.2.使用Timer()函数这是用的最多的一种方法,也是在VB联机手册中所推荐的。
添加一个CommandButton控件,再将以下代码添加到代码窗口中:Private Sub Command2_Click()Dim Savetime As SingleText1 = Timer beginSavetime = Timer '记下开始的时间While Timer < Savetime + 5 '循环等待DoEvents '转让控制权,以便让操作系统处理其它的事件。
WendText1 = Timer okEnd Sub这种方法虽然也很简单,但却有有一个致命缺陷,那就是Timer函数返回的是从午夜开始到现在经过的秒数。
vb中timer的interval值VB中Timer的Interval值在VB(Visual Basic)中,Timer是一个非常有用的控件,它可以帮助我们在程序中定时执行特定的操作。
Timer控件的Interval属性是设置定时器触发间隔的关键。
该属性表示以毫秒为单位的时间间隔,范围从1到2147483647。
在这篇文章中,我将详细介绍Timer的Interval属性以及如何根据具体需求选择合适的值。
第一部分:理解Timer控件的Interval属性Timer是一种和时钟类似的工具,它可以在设定的时间间隔内重复执行特定的代码段。
Interval属性决定了每次触发事件的时间间隔。
例如,如果我们将Timer的Interval属性设置为1000,那么每隔一秒钟,Timer控件就会触发一次Tick事件。
在实际编程中,我们可以使用Timer控件完成各种任务,例如定时刷新界面、定时数据采集、定时发送邮件等等。
通过合理设置Interval值,我们可以满足不同的需求。
第二部分:如何选择合适的Interval值当我们在编写程序时,应该根据具体任务的要求来选择合适的Interval值。
下面是一些指导原则:1.任务的时间敏感性:如果任务对时间要求很高,例如定时数据采集或实时刷新界面,Interval值应该尽量小,以保证任务的及时性。
一般来说,可以将Interval设置为几十毫秒甚至更小。
2.任务的消耗:如果任务需要大量的计算资源或者网络资源,应该适当增加Interval值,以避免过于频繁地触发事件,导致系统负荷过大。
3.用户体验:Interval值的选择也应该考虑用户体验。
对于一些需要用户操作的任务,如果Interval值设置得太小,可能会导致用户无法正常操作。
因此,我们需要根据用户的反馈来动态调整Interval值。
第三部分:实际案例分析为了更好地说明如何选择Interval值,我们来看一个实际的案例:定时刷新界面。
vb中timer的interval值-回复VB中Timer的Interval值,是用来设置定时器的时间间隔的属性。
在VB 中,Timer控件是一个比较常用的控件,用于实现一些需要定时执行的操作,如定时更新界面、定时发送数据等。
首先,我们来了解一下Timer控件的基本使用方法。
在VB中,要使用Timer 控件,首先需要在工具箱中将Timer控件拖放到窗体上。
拖放完成后,可以在属性窗口中对控件进行设置,其中最重要的就是Interval属性。
Interval属性即为设置定时器的时间间隔,单位为毫秒。
接下来,我们来看一下如何设置Interval值以实现不同的效果。
在VB中,Interval的值可以是任意大于0的整数,并且最大值为2147483647(大约24.8天)。
1. 小于1000ms的值:如果Interval的值小于1000ms,即1秒,那么Timer控件的Tick事件将以毫秒为单位被触发。
比如,如果设置Interval为500ms,那么每隔500毫秒,Tick事件就会被触发一次。
2. 大于等于1000ms的值:如果Interval的值大于等于1000ms,即1秒,那么Timer控件的Tick 事件将以秒为单位被触发。
比如,如果设置Interval为2000(即2秒),那么每隔2秒,Tick事件就会被触发一次。
3. 特殊值0:如果将Interval的值设置为0,那么Timer控件将会立即触发一次Tick 事件,并且在下一次Tick事件触发之前不再触发。
需要注意的是,Timer控件的Tick事件触发是异步的,也就是说,它不会阻塞主线程的执行。
因此,在使用Timer控件时,我们需要注意控制好程序的逻辑,以免出现并发问题。
另外,合理设置Interval的值也很重要。
如果Interval的值过小,比如设置为1毫秒,那么系统将不断地触发Tick事件,占用大量的CPU资源,导致系统性能下降。
而如果Interval的值过大,比如设置为1小时,那么在每次Tick事件触发前都需要等待很长时间,会导致程序的响应变慢。
下面是这个时钟屏保的界面做这个用到的控件只有一个计时器(Timer)和一个标签(Label)Public Class Form1Dim xc As Integer '时钟的中心点横坐标Dim yc As Integer '时钟的中心点纵坐标Dim OffsetX As Integer = 15 '滚动字幕初始位置Dim Offset As Integer = 15 '滚动字幕的偏移量Dim x1, y1 As IntegerDim x2, y2 As IntegerDim i As Integer = 0Dim n As Integer = 0Dim ss, mm, hh As Single '当前的时、分、秒数值Dim whattime As Date '时间Dim hlength As Integer = 100 '时针的长度Dim mlength As Integer = 120 '分针的长度Dim slength As Integer = 150 '秒针的长度Dim spen As New Pen(Color.Red, 2) '秒针的画笔Dim mpen As New Pen(Color.Gold, 3) '分针的画笔Dim hpen As New Pen(Color.Chocolate, 4) '时针的画笔Dim mypen As New Pen(Color.Blue, 3)Dim mbrush As New SolidBrush(Color.Green)Dim mfont As Font = Me.FontDim x3, y3, x4, y4, x5, y5, x6, y6 As Integer'时、分、秒三条指针的末端坐标Dim R As Integer = 200Dim L As Integer = 40Dim s As Integer = 25Dim qq As Integer'下面这句是使得时钟的中心点的位置在屏幕的中心Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Loadxc = Me.Width / 2yc = Me.Height / 2End Sub'下面是计时器的代码Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick'在计时器里的代码主要分两部分,一部分是上面的滚动字幕的代码,另一部分则是生成时钟图案的代码Dim mfont As Font = New Font(New FontFamily("黑体"), 20)'两个IF语句使得字幕可以在顶部左右滚动If (Label1.Left < 0) ThenOffsetX = +OffsetEnd IfIf (Label1.Right >= Me.Width) ThenOffsetX = -OffsetEnd IfLabel1.Left = Label1.Left + OffsetXDim mystr As String '声明一个用于显示时间的字符串mystr = Format(Now(), "long date") + Format(Now(), "long time") '把当前时间赋给字符串 Label1.Text = "我的屏保程序" + mystr'下面这段可以使得字幕的颜色可以不断地变换Dim fontcolor() As Color = {Color.Red, Color.Crimson, Color.Cyan, Color.Brown,Color.BlueViolet}Label1.ForeColor = fontcolor(n)If n = 0 Thenn = 1ElseIf n = 1 Thenn = 2ElseIf n = 2 Thenn = 3ElseIf n = 3 Thenn = 4Elsen = 0End If'下面开始“画”时钟Dim g As Graphics = Me.CreateGraphics() '先声明一个画板g = Me.CreateGraphicsg.Clear(Me.BackColor) '刷新画面' Me.Refresh()'下面这段“画”数字和数字旁的那些小线段的代码For i = 0 To 11x1 = CInt(xc + R * Math.Cos(i * 3.14 / 6))y1 = CInt(yc + R * Math.Sin(i * 3.14 / 6))x2 = CInt(xc + (R + L) * Math.Cos(i * 3.14 / 6))y2 = CInt(yc + (R + L) * Math.Sin(i * 3.14 / 6))g.DrawLine(mypen, x1, y1, x2, y2)If i <= 9 Theng.DrawString(i + 3, mfont, mbrush, CInt(xc + (R + L + s) * Math.Cos(i * 3.14 / 6)), CInt(yc + (R + L + s) * Math.Sin(i * 3.14 / 6)))Else : g.DrawString(i - 9, mfont, mbrush, xc + (R + L + s) * Math.Cos(i * 3.14 / 6), yc + (R + L + s) * Math.Sin(i * 3.14 / 6))End If'下面是画三条指针的代码Nextwhattime = DateTime.Nowss = whattime.Secondmm = whattime.Minutehh = whattime.Hourx3 = xc + slength * Math.Cos(1.5 * 3.14 + ss * 3.14 / 30)y3 = yc + slength * Math.Sin(1.5 * 3.14 + ss * 3.14 / 30)g.DrawLine(spen, xc, yc, x3, y3)mm = mm + ss / 60x4 = xc + mlength * Math.Cos(1.5 * 3.14 + mm * 3.14 / 30)y4 = yc + mlength * Math.Sin(1.5 * 3.14 + mm * 3.14 / 30)g.DrawLine(mpen, xc, yc, x4, y4)hh = hh + mm / 60x5 = xc + hlength * Math.Cos(1.5 * 3.14 + hh * 3.14 / 6)y5 = yc + hlength * Math.Sin(1.5 * 3.14 + hh * 3.14 / 6)g.DrawLine(hpen, xc, yc, x5, y5)'下面是“画”的外圈的代码qq = whattime.Secondx6 = xc + slength * Math.Cos(2.5 * 3.14 + qq * 3.14 / 30)y6 = yc + slength * Math.Sin(2.5 * 3.14 + qq * 3.14 / 30)Dim p As Graphics = CreateGraphics()Dim jpen As New Pen(Color.Coral)jpen.Width = 5p.DrawEllipse(jpen, x6, y6, 30, 30)Dim vpen As New Pen(Color.Blue)vpen.Width = 20g.DrawEllipse(vpen, xc - 280, yc - 280, 600, 600)End SubPrivate Sub Form1_MouseClick(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseClickEndEnd SubPrivate Sub Form1_MouseMove(ByVal sender As Object, ByVal e AsSystem.Windows.Forms.MouseEventArgs) Handles Me.MouseMoveEnd Sub End Class。
visual basic延时语句Visual Basic是一种编程语言,它提供了许多实现延时的方法。
下面列举了十个不同的Visual Basic延时语句,以帮助您实现所需的延时效果。
1. 使用Thread.Sleep方法:Thread.Sleep(1000) '延时1秒2. 使用Timer控件:Dim delayTimer As New Timer()delayTimer.Interval = 1000 '设置延时时间为1秒delayTimer.Start()delayTimer.Stop()3. 使用DoEvents函数:Dim startTime As DateTime = DateTime.NowDo While DateTime.Now.Subtract(startTime).TotalMilliseconds < 1000Application.DoEvents()Loop4. 使用Stopwatch类:Dim stopwatch As New Stopwatch()stopwatch.Start()Do Until stopwatch.ElapsedMilliseconds >= 1000Application.DoEvents()Loopstopwatch.Stop()5. 使用System.Threading命名空间中的Timer类:Dim delayTimer As New System.Threading.Timer(AddressOf DelayHandler, Nothing, 1000, Timeout.Infinite)6. 使用Task.Delay方法:Await Task.Delay(1000) '延时1秒7. 使用System.Timers命名空间中的Timer类:Dim delayTimer As New System.Timers.Timer(1000) '设置延时时间为1秒delayTimer.AutoReset = FalsedelayTimer.Start()AddHandler delayTimer.Elapsed, AddressOf DelayHandler8. 使用Async/Await关键字和Task.Delay方法:Private Async Sub Delay()Await Task.Delay(1000) '延时1秒End Sub9. 使用Sleep API函数:Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Integer) Sleep(1000) '延时1秒10. 使用自定义的延时函数:Sub Delay(ByVal milliseconds As Integer)Dim stopwatch As New Stopwatch()stopwatch.Start()Do Until stopwatch.ElapsedMilliseconds >= millisecondsApplication.DoEvents()Loopstopwatch.Stop()End Sub以上是十个用于实现延时效果的Visual Basic语句。
vb中timer的interval值-回复VB中的Timer控件是一种非常实用的工具,它可以用来定期触发某个事件或执行某个操作。
在VB中,Timer控件的Interval属性决定了两次Tick事件之间的时间间隔,本文将详细介绍Interval属性的作用以及如何设置合适的值。
首先,让我们来了解一下Timer控件的基本概念。
Timer控件是VB 中的一种计时器,它可以在指定的时间间隔内触发Tick事件。
Tick事件是Timer控件的主要事件,可以用来执行一些特定的操作,比如更新界面的内容、处理一些计时相关的逻辑等。
Timer控件的Interval属性是用来设定两次Tick事件之间的时间间隔的。
它的单位是毫秒(ms),因此Interval属性的值越小,两次Tick事件之间的时间间隔就越短,反之则越长。
一般来说,Interval的值应该根据具体的需求来进行设置。
在设置Interval属性的值时,我们需要考虑两方面的因素。
首先是实际需求,也就是我们希望两次Tick事件之间的时间间隔是多长。
如果我们希望定时器触发的频率较高,比如每秒钟都要执行一次Tick事件,那么Interval的值就需要设置得比较小,一般在100-1000之间。
另外一个要考虑的因素是系统资源的限制。
Timer控件是通过调用系统的计时器来实现的,如果Interval的值设置得过小,可能会导致程序的性能下降,甚至出现卡顿的情况。
因此,在设置Interval的值时,我们也需要根据系统的实际情况来进行调整。
在具体设置Interval的值时,我们可以根据如下的步骤进行调试和优化:第一步,确定实际需求。
我们需要明确每次Tick事件需要执行的操作,并根据操作的时间长度来决定Interval的值。
如果操作时间较长,可以适当增大Interval的值,以避免频繁触发Tick事件。
第二步,进行初步设置。
根据实际需求,可以先设置一个较为合理的Interval的值,然后进行测试和观察。
在VB中实现延时(等待)的几种方法在程序流程中经常要延时一段时间后再继续往下执行,在VB中常用的有以下几种方法(因为Timer控件打乱了程序的流程所以一般不用它):1.使用Windows API函数Sleep新建一个工程,添加一个TextBox控件和一个CommandButton控件,再将以下代码复制到代码窗口:Private Declare Sub Sleep Lib "kernel32" (ByV al dwMilliseconds As Long)Private Sub Command1_Click()Text1 = "sleep begin"Sleep 3000Text1 = "sleep end"End Sub按F5执行,按下Command1按钮,程序停止执行,3秒钟内不对用户的操作做出反应,并且Text1里的内容并没有发生改变。
这是怎么回事呢?原来,Sleep函数功能是将调用它的进程挂起dwMilliseconds毫秒时间,在这段时间内,此进程不对用户操作做出反应,程序中虽然将Text1的Text属性改成Sleep begin,但还没等完成对屏幕的更新进程就被挂起了,对用户来说程序象是死机一样。
所以这种方法虽然简单,但并不适用。
2.使用Timer()函数这是用的最多的一种方法,也是在VB联机手册中所推荐的。
添加一个CommandButton控件,再将以下代码添加到代码窗口中:Private Sub Command2_Click()Dim Savetime As SingleText1 = "Timer begin"Savetime = Timer '记下开始的时间While Timer < Savetime + 5 '循环等待DoEvents '转让控制权,以便让操作系统处理其它的事件WendText1 = "Timer ok"End Sub这种方法虽然也很简单,但却有有一个致命缺陷,那就是Timer函数返回的是从午夜开始到现在经过的秒数。
VB编写各种趣味小程序(附代码)一、鸟巢绘制二、加密三、解密四、蝴蝶飞舞五、文本编辑六、统计七、小球跳动八、计算器(彩票摇奖)九、学生信息录入十、矩阵转置十一、带有进度条的倒计时程序十二、加减乘除随机数题十三、计算器十四、抽奖一、鸟巢绘制Private Sub Form_Click()ClsDim r, xi, yi, xj, yj, x0, y0, aif As Singler = Form10.ScaleHeight / 2x0 = Form10.ScaleWidth / 2y0 = Form10.ScaleHeight / 2n = 16aif = 3.14159 * 2 / nFor i = 1 To nxi = r * Cos(i * aif) + x0yi = r * Sin(i * aif) + y0For j = i To nxj = r * Cos(j * aif) + x0yj = r * Sin(j * aif) + y0Line (xi, yi)-(xj, yj), QBColor(i - 1)PSet (xi, yi)Print i - 1Next jNext iEnd SubPrivate Sub Form_Load()Print "要求:";Print "1.将圆周等分成16份;"Print "2.每个等分点要标记成0-16的数字;" Print "3.按样本图的图案画图。
"End Sub附图:二、加密Function code(ByVal s$, ByVal key%) Dim c As String * 1, iAsc%code = ""For i = 1 To Len(s)c = Mid$(s, i, 1)Select Case cCase "A" To "Z"iAsc = Asc(c) + keyIf iAsc > Asc("Z") Then iAsc = iAsc - 26 code = code + Chr(iAsc)Case "a" To "z"iAsc = Asc(c) + keyIf iAsc > Asc("z") Then iAsc = iAsc - 26 code = code + Chr(iAsc)Case Elsecode = code + cEnd SelectNext iEnd FunctionPrivate Sub close_Click()Form11.HideForm1.ShowEnd SubPrivate Sub Jiami_Click()Text2 = code(Text1, 2)End SubPrivate Sub open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Dim counter As IntegerDim workarea(25000) As StringProgressBar1.min = LBound(workarea)ProgressBar1.max = UBound(workarea)ProgressBar1.Visible = TrueProgressBar1.Value = ProgressBar1.minFor counter = LBound(workarea) To UBound(workarea) workarea(counter) = "initial value " & counter ProgressBar1.Value = counterNext counterDo While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub save_Click()CommonDialog1.FileName = "a1.txt"CommonDialog1.DefaultExt = "txt"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1Print #1, Text2.TextClose #1End Sub三、解密Function UnCode(ByVal s$, ByVal key%)Dim c As String * 1, iAsc%UnCode = ""For i = 1 To Len(s)c = Mid$(s, i, 1)Select Case cCase "A" To "Z"iAsc = Asc("c") - keyIf iAsc < Asc("A") Then iAsc = iAsc + 26UnCode = UnCode + Chr(iAsc)Case "a" To "z"iAsc = Asc(c) - keyIf iAsc < Asc("a") Then iAsc = iAsc + 26UnCode = UnCode + Chr(iAsc)Case ElseUnCode = UnCode + cEnd SelectNext iEnd FunctionPrivate Sub close_Click()Form2.HideForm1.ShowEnd SubPrivate Sub Jiemi_Click()Text2 = UnCode(Text1, 2)End SubPrivate Sub open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Dim counter As IntegerDim workarea(25000) As StringProgressBar1.min = LBound(workarea) ProgressBar1.max = UBound(workarea) ProgressBar1.Visible = TrueProgressBar1.Value = ProgressBar1.minFor counter = LBound(workarea) To UBound(workarea) workarea(counter) = "initial value " & counter ProgressBar1.Value = counterNext counterDo While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub save_Click()CommonDialog1.FileName = "a.txt" CommonDialog1.DefaultExt = "txt" CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1 Print #1, Text2.TextClose #1End Sub四、蝴蝶飞舞Private Sub Form_Load()Print "蝴蝶飞出窗体后重新定位到左下方再向右上方飞" End SubPrivate Sub Timer1_Timer()Static PickBmp As IntegerIf PickBmp = 0 ThenImage1.Picture = Image2.PicturePickBmp = 1ElseImage1.Picture = Image3.PicturePickBmp = 0End IfCall mymoveEnd SubSub mymove()Image1.Move Image1.Left + 40, Image1.Top - 25If Image1.Top <= 0 ThenImage1.Left = 0Image1.Top = 2325End IfEnd Sub图:五、文本编辑Private Sub Copy_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextEnd SubPrivate Sub Cut_Click()Clipboard.ClearClipboard.SetText RichTextBox1.SelTextRichTextBox1.SelText = ""End SubPrivate Sub Exit_Click()Form3.HideForm1.ShowEnd SubPrivate Sub Font_Click()CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects CommonDialog1.Action = 4RichTextBox1.FontName = CommonDialog1.FontName RichTextBox1.FontSize = CommonDialog1.FontSize RichTextBox1.FontBold = CommonDialog1.FontBold RichTextBox1.FontItalic = CommonDialog1.FontItalic RichTextBox1.FontStrikethru = CommonDialog1.FontStrikethru RichTextBox1.FontUnderline = CommonDialog1.FontUnderline RichTextBox1.ForeColor = CommonDialog1.ColorEnd SubPrivate Sub Form_Load()Print "注:"Print "1.'打开'对话框的初始文件夹应是所要打开文件所在的" Print "文件夹,将提供的xz.txt文件打开;"Print "2.要实现将选定的内容格式化,必须在工具箱中添加" Print "RichTextBox控件(Microsoft Rich Textbox Comtrol 6.0)" Print "并在帮助菜单中查阅其字体设置的相关属性。
VB中的timerVB高精度计时器编程的讨论VB记时器编程的讨论在很多场合下编程(例如工业控制、游戏)中需要比较精确的记时器,本文讨论的是在VB下实现记时器的若干方法以及它们的精度控制问题。
在VB中最常用的是Timer控件,它的设置和使用都非常方便,理论上它的记时精度可以达到1ms(毫秒)。
但是众所周知的,实际上Timer在记时间隔小于50ms之下是精度是十分差的。
它只适用于对于精度要求不太高的场合。
这里作者要介绍的是两中利用Windows API函数实现精确记时的方法。
第一中方法是利用高性能频率记数(作者本人的称呼)法。
利用这种方法要使用两个API函数QueryPerformanceFrequency和QueryPerformanceCounter。
QueryPerformanceFrequency 函数获得高性能频率记数器的震荡频率,该函数的定义如下:Private Declare Function QueryPerformanceFrequency Lib "kernel32" _(lpFrequency As LARGE_INTEGER) As Long函数中的数据结构LARGE_INTEGER定义如下:Type LARGE_INTEGERlowpart As Longhighpart As LongEnd Type调用该函数后,函数会将系统频率记数器的震荡频率保存到lpPerformanceCount中,其中低位保存到lowpart中,高位保存到highpart中。
但是现在的Windows没有使用到hightpart (系统频率记数器的震荡频率与计算机的主频无关,我在几台机上做过验证,都是lowpart 为1193180,highpart为0)。
QueryPerformanceCounter函数获得系统频率记数器的震荡次数,函数的定义如下Private Declare Function QueryPerformanceCounter Lib "kernel32" _(lpPerformanceCount As LARGE_INTEGER) As Long获得记时器震荡次数保存在lpPerformanceCount中。