VisualBasic控件结构概述

2016-02-19 13:33 5 1 收藏

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - 编程语言 】

  循环结构
  循环结构允许重复执行一行或数行代码。VisualBasic支持的循环结构有:
  1.Do...Loop
  2.For...Next
  3.ForEach...Next
  
  Do...Loop
  用Do循环重复执行一语句块,且重复次数不定。Do...Loop语句有几种演变形式,但每种都计算数值条件以决定是否继续执行。如同If...Thencondition必须是一个数值或者值为True(非零)或False(零)的表达式。在下面的Do...Loop循环中,只要condition为True就执行statements。
  DoWhilecondition
     statements
  
  Loop
  当VisualBasic执行这个Do循环时会首先测试condition。如果condition为False(零),则跳过所有语句。如果condition为True(非零),则VisualBasic执行语句,然后退回到DoWhile语句再测试条件。
  因此,只要condition为True或非零,循环可以随意执行多少次。如果condition一开始便为False,则不会执行语句。例如,以下过程将计算某一目标字符串在另一字符串中出现的次数,只要发现目标串就执行循环:
  FunctionCountStrings(longstring,target)
    Dimposition,count
    position=1
    DoWhileInStr(position,longstring,target)
     position=InStr(position,longstring,target)_
     1
    count=count 1
    Loop
    CountStrings=count
  EndFunction
  如果目标字符串未出现在另一个字符串中,则InStr返回0,而且不再执行循环。
  Do...Loop语句的另一种演变形式是先执行语句,然后在每次执行后测试condition。这种形式保证statements至少执行一次:
  Do
     statements
  LoopWhilecondition
  其它两种演变形式类似于前两个,所不同的是,只要condition为False而不是True,它们就执行循环。
  
  For...Next000
  在不知道循环内需要执行多少次语句时,宜用Do循环。但是,在知道要执行多少次时,则最好使用For...Next循环。与Do循环不同,For循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For循环的语法如下:
  Forcounter=startToend[Stepincrement]
    statements
  Next[counter]
  参数Counter、Start、end和increment都是数值型的。
  注意increment参数可正可负。如果increment为正,则Start必须小于等于end,否则不能执行循环内的语句。如果increment为负,则Start必须大于等于end,这样才能执行循环体。如果没有设置Step,则increment缺省值为1。
  在执行For循环时,VisualBasic
  1.设置counter等于start。
  2.测试counter是否大于end。若是的话,则VisualBasic退出循环。(若increment为负,则VisualBasic测试counter是否小于end。)
  3.执行语句。
  4.counter增加一,或者增加increment(如果已指定的话)。
  5.重复步骤2到步骤4。
  以下代码打印出所有有效的屏幕字体名:
  PrivateSubForm_Click()
     DimIAsInteger
     Fori=0ToScreen.FontCount
     PrintScreen.Fonts(i)
     Next
  EndSub
  在VCR示例应用程序中,HighlightButton过程使用For...Next循环,一步步经过VCR窗体的控件集合,并显示适当的Shape控件:
  SubHighlightButton(MyControlAsVariant)
     DimiAsInteger
     Fori=0TofrmVCR.Controls.Count-1
    IfTypeOffrmVCR.Controls(i)IsShapeThen
    IffrmVCR.Controls(i).Name=MyControlThen
       frmVCR.Controls(i).Visible=True
    Else
       frmVCR.Controls(i).Visible=False
    EndIf
    EndIf
     Next
  EndSub
  
  ForEach...Next
  ForEach...Next循环与For...Next循环类似,但它对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。如果不知道一个集合有多少元素,ForEach...Next循环非常有用。
  ForEach...Next循环的语法如下:
  ForEachelementIngroup
    statements
  Nextelementt
  例如,下面的子过程打开Biblio.mdb,把每一个表的名字加到列表框中。
  SubListTableDefs()
    DimobjDbAsDatabase
    DimMyTableDefasTableDef
    SetobjDb=OpenDatabase("c:vbiblio.mdb",_
    True,False)
    ForEachMyTableDefInobjDb.TableDefs()
    List1.AddItemMyTableDef.Name
    NextMyTableDef
    EndSub
  请记住使用ForEach...Next时的几点限制:
  1.对集合,element只能是Variant变量,或一般的Object变量,或“对象浏览器”中列出的对象。
  2.对数组,element只能是Variant变量。
  3.ForEach...Next不能与用户自定义类型的数组一起使用,因为Variant不可能包含用户自定义类型。
  
  使用控制结构
  嵌套控制结构可以把控制结构放入另一个控制结构之内(例如在For...Next循环中的If...Then块)。一个控制结构内部包含另一个控制结构叫做nest(嵌套)。在VisualBasic中,控制结构的嵌套层数没有限制。按一般习惯,为了使判定结构和循环结构更具可读性,总是用缩排方式书写判定结构或循环的正文部分。
  例如,下面的过程要把打印机和屏幕共有的字体名全部打印出来:
  PrivateSubForm_Click()
     DimSFont,PFont
     ForEachSFontInScreen.Fonts()
     ForEachPFontInPrinter.Fonts()
     IfSFont=PFontThen
     PrintSFont
     EndIf
     NextPFont
     NextSFont
  EndSub
  注意,第一个Next关闭了内层的For循环,而最后一个For关闭了外层的For循环。同样,在嵌套的If语句中,EndIf语句自动与最靠近的前一个If语句配对。嵌套的Do...Loop结构的工作方式也是一样的,最内圈的Loop语句与最内圈的Do语句匹配。
  
  退出控制结构
  用Exit语句可以直接退出For循环、Do循环、子过程或函数过程。Exit语句的语法很简单:ExitFor在For循环中出现的次数没有限制,ExitDo在Do循环中出现的次数也没有限制。
  Forcounter=startToend
    [Stepincrement]
    [statementblock]
    [ExitFor]
    [statementblock]
  Next[counter[,counter][,...]]
  Do[{While|Until}condition]
    [statementblock]
    [ExitDo]
    [statementblock]
  
    Loop
  ExitDo语句可以在Do循环语法的所有版本中使用。
  ExitFor和ExitDo非常有用,因为它有时适于立即退出循环,而且不再执行循环中的任何进一步迭代或者语句。例如,在前面的打印屏幕和打印机共有字体的例子中,程序不断将打印机字体和给定的屏幕字体作比较,甚至在已经找到了一个相符的打字机字体后还在继续寻找。对这个函数有一个效率更高的改进版,在此,只要找到相匹配的字体后就立即退出循环:
  PrivateSubForm_Click()
    DimSFont,PFont
    ForEachSFontInScreen.Fonts()
    ForEachPFontInPrinter.Fonts()
    IfSFont=PFontThen
    PrintSfont
    ExitFor  '退出内圈循环。
    EndIf
    NextPFont
    NextSFont
  EndSub
  正如此例所表明的,Exit语句几乎总是出现在If语句或SelectCase语句内部,而If语句或SelectCase语句在循环内嵌套。
  用Exit语句中断循环时,计数器变量的值会因退出循环的方式而不同:
  1.在完成循环时,计数器的值等于上限值加上步进值。
  2.在提前退出循环时,计数器变量保持其值,并遵从有关取值范围的一般规则。
  3.在集合之外叠代时,如果计数器变量为Object类型,则其值为Nothing;如果计数器变量为Variant类型,则其值为Empty。
  
  退出子过程或函数过程
  也可从控制结构内部退出过程。ExitSub和ExitFunction的语法,和上一节“退出控制结构”中的ExitFor和ExitDo相似。ExitSub可以出现在子过程主体内的任何地方,出现的次数随需要而定。
  当过程已完成每个任务并可直接返回时,ExitSub和ExitFunction是非常有用的。例如,如果想改动前面的例子,使得对查找到的打印机和屏幕的共有字体,只打印其中的第一个,则可用ExitSub:
  PrivateSubForm_Click()
     DimSFont,PFont
     ForEachSFontInScreen.Fonts()
     ForEachPFontInPrinter.Fonts()
     IfSFont=PFontThen
      PrintSfont
      ExitSub    '退出过程。
     EndIf
     NextPFont
     NextSFont
  EndSub

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)->

来源:http://www.tulaoshi.com/n/20160219/1604616.html

延伸阅读
VisualBasic应用程序的结构 一个应用程序实际上无非是指挥计算机完成任务的指令集。应用程序的结构是组织指令的方法,也就是指令存放的位置和指令的执行顺序。 典型的"helloworld"例子以及诸如此类的简单应用程序都具有简单结构。对于只有一行的代码来说,组织结构并不十分重要。但应用程序越复杂,对组织或结构的要求也就越明...
使用DataCombo和DataList控件 DataCombo和DataList控件与标准列表框和组合框控件极为相似,但有一些重要的不同之处,这种不同使这两个控件在数据库应用程序中具有极大的适应性和用武之地。这两个控件都可以被这些控件所绑定的数据库字段自动填充。此外,它们还能有选择地将一个选定的字段传递给第二个数据控件,从而适合用于创建“...
Variant变量中存储的Objects 可以将Objects存储在Variant变量中。当需要高效地处理包括Objects在内的各种数据类型时,这可能十分有用。例如,一个数组中的所有元素都必须具有相同的数据类型。将数组的数据类型设置成Variant就可将Objects连同其它数据类型一起存入同一个数组中。 数组 如果有过用其它语言编程的经历,...
提供可选参数的缺省值 也可以给可选参数指定缺省值。在下例中,如果未将可选参数传递到函数过程,则返回一个缺省值。 SubListText(xAsString,OptionalyAs_ Integer=12345) List1.AddItemx List1.AddItemy EndSub PrivateSubCommand1_Click() strName="yourname" '未提供...
标签: Web开发
全局XML Web服务体系结构(Global XML Web Services Architecture,下面简称GXA)平台是一个新术语,包括Web服务交互领域的许多制定的新标准。相当多的大公司正在GXA的幕后进行合作,包括微软和IBM. GXA的主要目标是定义指定Web服务的协议新家族的语法和语义,这些协议把SOAP和XML的基本功能带到下一代相互适应性中。虽然在过去的几年中,已经做...

经验教程

547

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部