VB热点答疑2016.4.6更新Q3

收录助教君在VB习题课上最常被问到的问题,每周更新,希望对大家有所帮助。

Q1.如何让新的文本内容接在原来的内容后面/下一行显示?

A1.例如,Label1.text原本的内容是"VB程序设计",现在要把"助教好帅"接到原来的内容后面,应该这样写

    VB热点答疑2016.4.6更新Q3

    还有缩写形式:

Label1.text &= "助教好帅"

    与第一种写法等价。

    要换行显示怎么办呢?拼接上换行符vbCrLf就行了,换行符表示“在此处开始新的一行”。如:

Label1.text &= "助教好帅" & vbCrLf

Q2.(针对第四周作业)如何累计加班天数?

A2. 首先要给大家讲一点基础知识,叫做“变量的作用域”。什么意思呢?每个Dim出来的变量,都是有自己的“活动范围”的,出了这个范围,这个变量就不存在了。

      举个例子:

      VB热点答疑2016.4.6更新Q3

      也就是说,如果你在一个Sub内部(也就是Sub到End Sub这两行之间的区域)定义的变量,出了这个Sub就无法访问了。如果你在Button2_Click这个Sub里也定义了一个变量a,那这个a和Button1_Click里那个a没有丝毫关系。打个比方,比如你单名一个“飞”字,但你姓唐,那以“姓”为作用域来划分的话,你就和《三国演义》里那个同样名叫“飞”的人区分开了,因为他姓张。

      来看下面这个问题:我想定义一个整型变量sum,初始值为0,每点击一次Button1时sum就加1,点击Button2则在Label1里显示Button1被点击了几次(也就是sum的值)。这怎么做到呢?

      显然,sum不能被Dim在任何一个Sub里,因为两个Sub都要用到。

      解决方法是,在“通用声明段”里声明sum。

     VB热点答疑2016.4.6更新Q3

    问题解决。我习惯性的把定义在通用声明段的变量(如上面的sum)称为“全局变量”,而把Sub内部定义的变量(如前面的a)称为“局部变量”。

    还有一个初学者常见的错误

    VB热点答疑2016.4.6更新Q3

   这样做的后果是什么?答案是,Sub里声明的局部变量会“屏蔽”同名的全局变量,按这种写法,在Button2_Click这个Sub里,能访问到的sum只能是Sub内部定义的那个sum,而不是全局的sum。

Q3. 我写的这些代码,到底什么时候、按什么顺序运行?是一点那个三角型按钮就依次运行吗?

A3. 这里又要给大家介绍一个概念,叫做“事件驱动”,什么意思呢?简单地说就是“有事就处理,没事就歇着”。VB就是典型的事件驱动型编程。

     我们写的代码,并不是在程序一开始运行时就被执行,而是要“等待时机”。在VB里,每个控件都有很多系统预定义好的事件,比如一次鼠标点击(click)、按一次键盘(keypress)、窗口加载完成(onload)、文本内容发生改变(textchange)等等。系统会监听这些事件,当这些事件发生时,系统会执行相应的代码来响应事件的发生。好比上课老师点名让学生回答问题,点到谁的名字,谁就起来回答,没被点到的人坚决不吭声,这就叫“点名驱动型课堂”。

       所以我们写代码的时候,其实是按照以下步骤来做的:

      1.选择要处理哪个控件上发生的事件,是button1上的?还是textbox1上的?

      2.选择要处理的事件类型,是点了下鼠标?还是按了下键盘?

      3.当做完选择之后,系统会自动给我们初始化一段代码,就是该事件触发时要执行的那个代码段的头和尾(Sub 和 End Sub),我们只需要在这个代码段内部写好我们的代码,每次当这个事件被触发时,这段代码就被执行一次

 VB热点答疑2016.4.6更新Q3

当光标落在某个sub范围内时,上面的两个栏会自动显示这个代码段对应的是哪个控件的哪个事件。

VB热点答疑2016.4.6更新Q3

所以大家注意,你写的代码当且仅当相应的事件发生时才会被执行。而且,相应的事件每发生一次,这段代码就执行一次

反例:下面这段代码不work,因为每一次KeyPress时,这段代码都会从count=0开始原原本本地执行一遍。

VB热点答疑2016.4.6更新Q3

要正确的初始化count值,应该在声明时直接初始化:Dim count As Integer = 0。

最后,系统对一些控件的常用功能做了快捷设置,比如在设计界面,双击一个按钮,系统会自动把光标定位到处理click事件的代码段内。双击Textbox、Label又会如何呢?自己试下吧!

未完待续

更多相关文章
  • 学习图像算法阶段性总结(附一键修图Demo)2016.04.19更新demo
    今天特别感慨,自己从决定研究图像处理,势必要做出一键修图算法. 经历了,三个多月的书籍积累,三个多月的算法调整以及优化. 人是一种奇怪的动物,当你做不到的时候,你以为做到了,自己会感觉很爽,很有成就感. 而当你做到了,却会觉得也就那么回事. 一开始自己只是很意外性地做到了一种劣质的颜色矫正算法,就觉 ...
  • 视频分享地址:http://pan.baidu.com/s/1boiC3ZT我的QQ:303629685
  • 目录 什么是HTML语义化? 为什么要语义化 常用标签的语义 HTML5新元素 一.什么是HTML语义化?       简单来讲就是:每个标签做自己的事,使得能够被机器直接读懂. 二.为什么要语义化?       1.更容易被搜索引擎收录.       2.方便其他类型设备解析(如:屏幕阅读器等) ...
  • WebStorm配置2016/3/14更新
    目录: 1.主题设置 2.模板设置 3.代码段设置 4.快捷键设置 5.显示行号+自动换行 6.配置github 7.常用快捷键 1.主题设置     1)ctrl+alt+s 打开Settings界面,Editor > Colors&Fonts > Font.     2)De ...
  • DelphiMlSkinV2.9(2016.3.20)发布啦它能让你的程序拥有像QQ一样多彩炫丽的外观
    组件包和Demo程序下载地址: http://pan.baidu.com/s/1qWJgXdU       购买正式版:http://www.pngui.com 支持:Delphi7.Delphi2007.Delphi2009.Delphi2010.DelphiXE.DelphiXE2.Delphi ...
  • 个性定制你的Git命令行提示符
    1, 让BASH 命令行显示当前支线 以及 显示提交状态 并且使用不同颜色高亮区分效果图:进入到git的工作目录后,显示当前所在支线名称如果有已跟踪 未暂存的版本,那么使用红色* 提示如果有已跟踪 未提交的版本,那么使用**** 提示切换到其他支线后 提示符能打印当前支线名称切换到非Git工作目录后 ...
  • splitjob报错的troubleshooting过程
    先说结果,步骤为:1)由job code查找报错的server name(production server)2)在backup server上查找这个server备份任务用到的dg成员3)通过命令查找dg备份任务的log4)如果是因为pre脚本失败,手动执行分离,执行后其实任务就copy正常了5) ...
  • 目前,我已经完成了Module-Zero的翻译,请查看我的<Module-Zero学习目录>. 到现在为止,使用ABP框架开发正式项目已经3个月有余了,期间翻阅了大量文档资料,包括ABP官网的文档,以及 @阳光铭睿 的系列教程. 但是我今天想回过头来,照着ABP官网的英文文档,加上我这几 ...
一周排行
  •                                                              web前端培训-5个界面效果很炫的JavaScript UI 框架 Web 开发很简单,Web ...
  • zabbix日志文件放在/tmp目录下,一个server.log的文件一,查看zabbix的运行状况1,#ps aux | grep zabbix :查看zabbix正在运行的进程:2,#netstat -nplut ...
  •     Nginx默认是不允许列出整个目录的.如需此功能,打开nginx.conf文件或你要启用目录浏览虚拟主机的配置文件,在server或location 段里添加上autoindex on;来启用目录流量,下面会 ...
  • 在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设 ...
  • 思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果:代码如下:import android.content.Context; import android.graphics.C ...
  • sqlplus,启动数据时会用到oraclesysdbaeclipse~~~
  • .NET深入学习笔记(4):深拷贝与浅拷贝(DeepCopyandShallowCopy)
    今天继续利用准备WSE安全开发文章的空闲时间,完善<.NET深入学习笔记>系列 ...
  •    今天参加了 2013 hadoop中国技术峰会,虽然接触相关技术不多,顶多还是感兴趣,但是得到ITPUB赠送的门票,就决定要参加了,虽然感觉去那儿听一天演讲比工作累多了,但是收获还是满满的,开阔了视野,虽然号称 ...
  • 前几天上网收信,看到网友发信给我说我的<跟我一起写Makefile>以及<用GDB调试程序>被抄袭了,已被出版.一看,还是清华大学出版社.唉,这是清华大学出版社出版的第二本抄袭我文章的书了,第 ...
  • Windows环境下使用Redis缓存工具的图文详细方法
    一.简介       redis是一个key-value存储系统.和Memcached类似 ...