大学vb,vb timerr事件是系统事件还是用户事件?

> 急timer控件里又触发timer事件了程序如何跑是继续完成timer事件还是从头开始执行timer事件
急timer控件里又触发timer事件了程序如何跑是继续完成timer事件还是从头开始执行timer事件
mushan1983 & &
发布时间: & &
浏览:11 & &
回复:2 & &
悬赏:0.0希赛币
急急急!!!!!timer控件里又触发timer事件了程序怎么跑是继续完成timer事件还是从头开始执行timer事件我用VB进行串口通信,上位机发送命令字后,下位机接收到以后回传,触发oncomm事件后让timer1.enabled=true 然后执行timer控件,在timer控件里执行当上位机接收的数据与命令字相同后,再发送“R”,此时应该会在触发oncomm事件对吧?那又会让timer1.enabled=true ,我想问此时程序具体怎么跑,是继续将未跑完的第一timer事件运行完在响应oncomm事件还是立马响应oncomm事件而继续执行当前timer事件里面后面的程序?请教高手指点,不胜感激!!!!!!
形成一个类似递归一样调用了, timer会再次执行, 想想递归的效果
web_lover & &
16:55:33 & &
& & (0)(1)引用会继续完成当前正在运行的TIMMER事件,VB里每个过程结束后才会进行下一个过程.在你的程序中会在完成了当前的TIMMER事件后再去进行下一个TIMMER事件,通过单步调试可以看到weaz2007 & &
16:55:33 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&共有 1586 人关注过本帖
标题:求助VB中的timer事件问题
等 级:论坛游民
帖 子:61
专家分:18
结帖率:38.46%
&&已结贴√
&&问题点数:10&&回复次数:4&&&
求助VB中的timer事件问题
我从网上下载了vb6.0精简版,我想timer事件每隔一秒就执行一次,但为什总是执行一次就停止了,而不是重复执行??? ,高手看看是不是代码出了问题。给点意见
-----------------------------------------------------------------------------
这是界面 ,【】内为这个控件的名称,//内为这个控件的caption.
&&/倒计时时间(s)/【label3】&&&&&& //【text1】
&/ 还剩时间(s)/【label1】&&&&&&&&//【label2】
&&&&&&&&& / 开始/【command1】&&&&&&&&【timer1】
--------------------------------------------------------------------------
&timer的属性设置
&&&&&&&&&&&&timer1.inter=1
&&&&&&&&&&&&enabled=false
-----------------------------------
-----------------------------------------------------------------
Private Sub Command1_Click()
If Text1.Text = && Then MsgBox &请输入秒数!&, vbInformation, &操作提示&
Timer1.Enabled = True
-------------------------------------------------------
Private Sub Form_Load()
Timer1.Enabled = False
-----------------------------------------------------------
Private Sub Timer1_Timer()
Dim ss As Integer
ss = Val(Text1.Text)
ss = ss - 1
Label2.Caption = ss
If ss & 0 Then Timer1.Enabled = True
If ss = 0 Then
Timer1.Enabled = False
Label2.Caption = 0
--------------------------------------------------
我已经尽量写清楚了,如果有必要请+q&&
搜索更多相关主题的帖子:
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
&&得分:10&
ss = Val(Text1.Text)
ss = ss - 1
Text1.Text = ss
Label2.Caption = ss
等 级:蝙蝠侠
帖 子:249
专家分:989
关注中!!!!
等 级:论坛游民
帖 子:61
专家分:18
谢谢2楼的,我试了,果然能行,但我想不明白:
ss = Val(Text1.Text)
ss = ss - 1
Text1.Text = ss
Label2.Caption = ss
为什么在第三行还要+上&Text1.Text = ss&??
等 级:版主
威 望:143
帖 子:3490
专家分:20840
你每次从 Text1.text 中取值,
而不去改变 text1.text 中的值,那么每次取到的值都是一样的。
计算出来的 ss 也就是一样的值。
一样的值显示出来,你能看出执行了几次不???
所以老认为只执行了一次。
授人于鱼,不如授人于渔
早已停用QQ了
版权所有,并保留所有权利。
Powered by , Processed in 0.037081 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedVB中timer控件每隔一小时事件发生一次 代码_百度知道[转载]vb自学教材——VB常用控件的事件详解
作者:杜 勇
  在Windows操作系统上,VisualBasic作为一门计算机语言,功能非常强大,而且简单易学。VisualBasic提供可视化设计工具,编程人员可利用VisualBasic提供的控件轻松的“画”出应用程序的友好界面,因此容易入门,入门以后就有能力进一步学习难度更大的编程语言。VisualBasic作为编程人员的首选程序设计语言,有如下特点:
1、VisualBasic是开发Windows应用程序的强有力的工具,使用了最先进的程序设计思想,能轻而易举的开发出符合Windows规范和风格的应用程序;
2、VisualBasic在科学计算、多媒体软件开发、网络应用等方面都有强大的功能,尤其在数据库开发方面,提供了许多控件,便于连接、查询和显示查询结果,现在很多管理软件,包括一些大型软件,都是利用VisualBasic开发的;
3、VisualBasic改变了传统的程序的机制,采用“事件驱动”方式,用户操作产生不同的事件,程序根据这些事件去分别执行不同的子程序。编程人员可以分别编写出这样一些子程序,因此使编程难度大大下降。
  在VisualBasic语言中,控件是用户界面的基本要素,是进行可视化程序设计的重要基础,它不仅关系到界面是否友好,还直接关系到程序的运行速度以及整个程序的好坏。每个控件都具有它的属性、方法和事件,设计窗体就必须很好的掌握控件的事件和应用方法。控件具有很多相同的事件,各个控件也有其特有的一些事件。
  VisualBasic中的控件分为两种,即标准控件(或内部控件)和ActiveX控件。内部控件是工具箱中的“常驻”控件,始终出现在工具箱里,而ActiveX控件是扩展名为.ocx的文件(在WindowsSystem文件夹里),它是根据变成需要添加到工具箱里的。
  在一般情况下,工具箱里只有标准控件,为了把ActiveX控件添加到工具箱里,可按以下步骤执行:
(1)在菜单里选择“工程-部件”,弹出“部件”对话框;
(2)在对话框中选择“控件”选项卡,显示ActiveX控件列表;
(3)在列表框中找到需要添加的控件名称,单击控件名称左侧的复选框;
(4)使用同样的方法选择需要添加的其它控件;
(5)单击“确定”按钮,即可将所选ActiveX控件添加到工具箱里。
第一章、标准控件的事件
第二章、ActiveX控件的属性
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。  事件(Event):
  事件是指由系统事先设定的、能被对象识别和响应的动作。
  事件是指对象对于外部动作的响应,当对象发生了某个事件,就会执行与此对象的这个事件相应的代码,这段代码被称为“事件过程”。事件过程的命名格式为: Private Sub 控件名_事件名()
  例如:我们在窗体上按了一下鼠标左键,这样就发生了一个窗体的“Click”(即单击)事件,并执行与其对应的事件过程。这个的事件过程名称为: Form1_Click
  我们可以为事件过程编写代码,使得当某个对象发生了某个事件时可以执行我们需要的一些操作。
  事件即控件对外部条件的反应,不同的控件具有不同的事件。如:对于命令按钮,通常情况下我们都是单击它,所以最常使用的是单击事件,对于驱动器列表框控 件,通常我们使用的是它的改变事件。但我们使用控件的相应事件时,我们必须对其相应的事件进行编写代码,否则控件什么事情也不会做。
  事件处理器
   确定控件如何响应事件的事件过程可以称之为“事件处理器”。
  要为某一控件的特定事件编写程序,可以通过双击控件切换到代码窗口再选择相应的事件来完成,也可以通过“视图”菜单中的“代码窗口”命令切换到代码编辑窗口来完成。
  我们看到两个下拉列表框,第一个下拉列表框里包含了窗体中所有的控件,包括窗体本身;第二个下拉列表框中包含了选中控件的所有事件。在此状态下,要对某个 控件进行编程,需要 先在左边的下拉列表框中选中要编程的控件,然后再右边的下拉列表框中选择要编程的事件。例如我们要对“Commandl”控件的“'’事件 进行编程。
  控件名称和相应事件的名称共同构成了事件处理器的名称,如上图中所示的“Form Load ()”表示对象是“Form'’窗体,“Load'’表示窗体的加载事件,即窗体启动时发生的事件,对此事件进行编程可以确定窗体启动时所做的事情。
  常用的事件有两种,即鼠标事件和键盘事件。
  鼠标事件
  鼠标事件是Visual Basic编程中最常用到的事件,多数控件都支持鼠标操作,因此对鼠 标事件进行编程是非常重要的。
  鼠标事件主要有以下几种:
  Click:单击事件,即单击鼠标时发生的事件。
  :双击事件,即双击鼠标时发生的事件。
  MouseDown:鼠标按下时发生的事件。
  MouseUp:鼠标抬起时发生的事件。
  MouseMove:鼠标移动时发生的事件,对某控件的此事件进行编程,则当鼠标移过此控件时就会触发此事件,执行其相应代码。
  鼠标事件的发生顺序是:
  (1)首先发生的是MouseMove事件,当鼠标移动时,将会连续触发MoouseMove事件。
  (2)当鼠标按下时发生MouseDown事件。
  (3)鼠标松开时发生MouseUp事件。
  (4)如果按住的是鼠标左键,则Click事件在MouseUp之后发生。
  双击鼠标时事件发生顺序是:
  (1)当鼠标按下时发生MouseDown事件。
  (2)鼠标松开时发生MouseUp事件。
  (3)单击鼠标发生Click事件。
  (4)双击鼠标发生DblClick事件。
  (5)完成鼠标双击时发生MouseUp事件。
  在上面所列出的这些事件中,最常用到的就是Click事件和DblClcik事件,MouseMove和 douseUp事件不太经常用,一般用在需要对鼠标进行处理的地方。如:对于最常见的命令按钮,通常情况下我们使用Click事件;而在进行画图的时候, 例如画一条直线,必须先按住鼠标左键,然后拖动鼠标,再松开鼠标。在此过程中,首先触发MouseDown事件,我们可以在此事件中记录鼠标的开始位置, 再对MouseUp事件进行编程,以记录鼠标的结束位置;其中还要对MouseMoove事件进行编程,以在移动过程中进行处理画图操作,而不是 Click或DblClick事件。
  鼠标的单击事件定义如下:
  Sub Click()
  End Sub
  双击事件定义如下:
  Sub DblClick()
  End Sub
  对于MouseDown和MouseUp事件,它们的定义要复杂的多。对于MouseUp事件,其定义如下:
  Private Sub Labell _MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  在上面的参数中,Button As Integer定义了参数Button,该参数是用于确定按下的是鼠标的左键,右键,还是中键,其取值如下表所示。
  常量 数值 说明
  VbleftButton 1 按下鼠标左键
  VbRightButton 2 按下鼠标右键
  VbMiddleButton 4 按下鼠标中键
  Shift As Integer定义整型参数Shift,该参数用于确定键盘上Shift键、Ctrl键、Alt 键是否被按下,其取值如下表所示。
  常量 &数值 说明VbShiftMask1 &按下Shift键VbCtrlMask&2 &按下Ctrl键VbAltMask&4 &按下Alt键
  要判断是哪个键被按下了,要由相应的程序代码来完成。如:
  Private Sub Labell MouseUp(Button AS Integer,Shift As Integer,X aS Sing , Y as Single)
  If Button=VbRightButton Then
  Msgbox(“你按下去的是鼠标右键”)
  End If
  End Sub
  此段代码在鼠标抬起时执行,程序中用If条件判断语句来判断究竟是哪个键被按
  当Button=VbRightButton成立时,即鼠标右键被按下,这时可以执行相应的操作。
  Private Sub Labell MouseUp(Button As Integer,Shift As Integer,X as Sin2 Single)
  If Shift=2 Then
  Msgbox(“单击鼠标时Ctrl键被按下”)
  End Sub
  这段代码在执行过程中判断当鼠标抬起时键盘上哪个键被按了下去。如上表说明,当Shift值为2时,表示Ctrl键被按了下去。
  由上面的例子可以看出我们可以对鼠标进行一些判断,然后执行一些特殊操作,但用起来通常比较麻烦。
  键盘事件
  鼠标事件是由鼠标键的单击、双击、移动等操作时发生,键盘事件则是在键盘的某个键按下去时触发。除了鼠标事件外,通常需要对键盘事件进行编程。键盘事件主要有以下几种:
  (1)KeyDown:当键盘上某键被按下去时发生。
  (2)KeyUp:键盘上的键抬起来时发生。
  (3)KeyPree:此事件发生在键盘被按下后和字符被显示出来之前发生。
  对于键盘事件,相对来说KeyDown事件和KeyUp事件使用比较少,通常情况下对KeyPress事件编程较多,因为此事件注盘被按下的是哪个键
  KeyPress事件定义如下:
  Private Sub Textl_KeyPress( As Integer)
  End Sub
  其中,参数KeyAscii被定义为整型变量,表示被按下去键的Ascii码,我们可以通过对变量KeyAscii值的判断来执行一些特殊操作。例如要想实现在文本框中只能输人数字,不接受其它字符,可以编写如下代码:
  Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii & 48 Or KeyAscii & 57 Then
  KeyAscii = O
  End If
  End Sub
  此段代码表示:如果被按下去的键的Ascii码值不在48到57之间(即输入不是数字),则将KeyAssii值设置为零。从而不进行操作,文本框中并不存在输入的字符。
  (4) Change:在控件的内容发生改变时执行。如:当我们要做一个类似记事本程序的时候,用文本框控件作为内容编辑区,当文本框内容改变而 并未保存时,用户却在此时退出程序,我们希望程序能够给出提示。可以通过定义一个整型变量“IsChang&,当其值为0时表示未存盘,其值为1时表示存 盘了,在文本框控件的change事件中输入如下代码:
  “IsChange=0&。在程序退出事件中对IsChange值进行判断,当值为0时就给予提示,否则退出程序。程序代码如下:
  Private Sub Textl_Change()
  IsChange=0
  End Sub
  Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If lsChange = 0 Then
  MsgBox (&还未存盘,是否存盘&), VbOkCancle, &提示!&
  End If
  End Sub
  此段代码用于程序退出时的判断,Form_QueryUnload事件表示程序退出时所执行的事件。
  这里主要介绍了事件处理器,常见的属性与各种事件,在Windows应用程序中,我们经常要用到上面所介绍的属性与事件。
  在开发Windows程序时,有一个很重要的概念——焦点。所谓焦点,就是控件能够接受键盘输入的当前状态。只有具有焦点的控件,才能接受用户的键盘输 入;换一种说法也可以这样说,当前状态下用户所有的键盘输入只能被具有焦点的控件所获得。需要注意的是,焦点只是在程序运行时才有的概念,也就是说在设计 程序时,不能说某个控件具有焦点或不具有焦点。
  焦点是对象接受用户鼠标操作或键盘操作的能力。当对象具有焦点时,才可以接受用户的操作。例如,在有就几个文本框的窗体中,只有具有焦点的文本框才能接受用户的输入。
  要使用某个控件获得焦点,可以有如下三种方法:
  (1)、使用键盘上的“Tab”键,将焦点移到相应的控件上。
  (2)、使用鼠标直接在相应的控件上单击就可以了。
  (3)、在程序代码中使用该控件的“”方法。
  对于绝大多数的控件,都具有“TabStop”属性和“Tablndex”属性。
  其中,“TabStop”属性是用来设置是否允许 用户使用“Tab”键将焦点移到该控件上,默认情况下是允许的。“TabStop”属性有两个取值:“True”和“False”,若其值为“True” 时,允许使用“Tab”键将焦点移到该控件;否则,就不允许。但要注意,不管“TabStop'’属性的取值为“True”还是为“False”,使用鼠 标都可以将焦点转移到该控件。
  “Iablndex”属性则是用来设置该控件的跳表顺序的。前面已经说过,使用“Tab”键可以将焦点从一个控件上转移到另一个控件上,在这个过程中就有 一个跳表顺序的问题。也就是说,当用户第一次按下“Tab”键时,焦点将会移到哪一个控件上;第二次按下“Tab”键时,焦点又会移到哪一个控件上等,这 个顺序就是跳表顺序。
  在设计窗体时,跳表顺序是根据控件放人窗体的先后顺序来决定的。即第一个放人窗体的控件将最早获得焦点,以后每按一次“Tab”键,焦点就会转移到下一个放人窗体中的控件上。
  在很多情况下,某些控件不需要使用“Tab”键将焦点移到该控件上或是不能根据控件放人窗体的先后顺序来决定跳表顺序,这时就需要设置“TabStop” 属性和“Tablndex'’属性了。“Tablndex”属性的取值是一个整数,从0开始依次类推,该属性的值小的将先获取焦点。
  另外,还有两个与焦点相关的事件:“GotFocus”事件和“LostFocus”事件。当焦点从一个控件转移到另一个控件上时,前者即曾经拥有焦点的控件,将会发生“LostFocus”事件而后者即将会拥有焦点的控件,则会发生“GotFocus”事件。
  以下是VB中的常见事件:
  change 对于滚动条来说,滑块位置改变;对于textbox来说,内容改变
  click 对象单击
  dblclick 对象双击
  dragdrop 鼠标拖动
  dragover 鼠标拖过
  dropdown 鼠标键松开
  error 错误处理
  gotfocus 获取焦点
  itemcheck
  keydown 键盘按下
  keyup 键盘抬起
  keypress 键盘按键
  linkclose 网络连接关闭
  linkerror 网络连接错误
  linknotify
  linkopen
  oledragover
  olegivefeedback
  olestartdrag
  pathchange
  patternchange
  scroll
  timer 定时器计时达到预定间隔
  LostFocus 对象失去焦点
  Load 对象加载,比如form的加载
  MouseDown 鼠标按下
  MouseMove 鼠标移动
  MouseUP 鼠标抬起
  OlecompleteDrag ole对象的拖动
  OleDragDrop ole对象的移动
  paint 绘画
  QueryunLoad
  Resize form或者控件大小重绘
  Terminate 线程,进程终止
  Unload 卸载
为本词条添加和相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
您也可以使用以下网站账号登录:
此词条还可添加&
编辑次数:4次
参与编辑人数:4位
最近更新时间: 21:34:59
贡献光荣榜

我要回帖

更多关于 timer tick事件 的文章

 

随机推荐