• 范文大全
  • 公文写作
  • 工作总结
  • 工作报告
  • 医院总结
  • 合同范文
  • 党团范文
  • 心得体会
  • 讲话稿
  • 安全管理
  • 广播稿
  • 条据书信
  • 优秀作文
  • 口号大全
  • 简历范文
  • 应急预案
  • 经典范文
  • 入党志愿书
  • 感恩演讲
  • 您现在的位置:雨月范文网 > 安全管理 > 正文

    c 控件数组【什么是控件数组控件数组的优点】

    来源:雨月范文网 时间:2019-04-07 点击:

      控件数组是一组具有相同名称和类型的控件的集合,通过各自的编号(下标)来识别,并且可以共享事件。那么你对控件数组了解多少呢?以下是由小编整理关于什么是控件数组的内容,希望大家喜欢!

    什么是控件数组控件数组的优点

      控件数组的概述

      在设计时,有三种办法创建控件数组:更改控件的Index属性、将已有的控件复制到同一窗体中、使多个同类型的控件的名称(Name属性)相同。

      更改Index属性

      选择一个控件,按F4打开“属性”面板,找到“Index”属性,将其更改为一个0和32767之间(包括0和32767)的且未被用于其他控件索引值的整数,即可创建一个以原控件名称为名称的控件数组。

      复制已有控件

      若已有一控件名为Command,右击该控件,单击快捷菜单中的“复制”,再右击控件所在窗体(或其中的一个类似Frame的容器控件),单击快捷菜单中的“粘贴”,VB会弹出一个对话框,显示“已经有一个控件为 'Command'。创建一个控件数组吗?”单击“是”按钮,就可创建一个名称(Name属性)为“Command”的控件数组,被复制的控件为Command(0),粘贴的控件为Command(1)。

      使控件名相同

      若已有一控件名为Command,将另一同类型控件的Name属性改为“Command”后,VB也会弹出一个对话框,单击“是”即可创建一控件数组。

      运行时增减对象添加对象

      在VB中,不能在运行时直接创建一个原先不存在的控件数组,但可以使用Load函数为已存在的控件数组添加同类型的控件。

      假设已有一个控件数组名为“Command”,数组中只有一个对象“Command(0)”,在运行时,可以通过下面的代码增加一个对象“Command(1)”。

      PrivateSubCommand_Click(IndexAsInteger)'控件数组中控件的点击事件LoadCommand(1)'添加Command(1)Command(1).Top=0'将Command(1)移至顶端Command(1).Visible=True'将Command(1)设置为可见EndSub

      说明:

      此处的Load函数的语法如下:

      Load Object (Index As Integer)

      Load函数参数

      参数

      描述

      Object

      必选,对象表达式,要添加控件的控件数组名称。

      Index

      必选,数值表达式,0~32767的一个整数,被添加的控件在控件数组中的索引值(Index属性),该值必须未被引用。

      运行时在一个控件数组中添加了新的控件后,新控件除Index、TabIndex和Visible属性外,其余属性与该控件数组中Index属性最小的控件的相应属性完全相同。而Index属性在Load函数中指定,TabIndex属性取VB规定的默认数值(比其他任何控件都大),Visible为False。所以需要改变新控件的Left或Top,以及Visible属性后才能看到它。

      这里的代码仅设计用于添加Command(1),即使Command中的按钮被点击两次,也不能添加Command(2),而是会返回“对象已经加载”的错误。为了不断添加控件,可以使用下面的代码。

      PrivateSubCommand_Click(IndexAsInteger)'控件数组中控件的点击事件IfCommand.UBound=32767ThenExitSubLoadCommand(Command.UBound+1)'添加控件Command(Command.UBound).Top=Command.UBound*150'移动新控件Command(Command.UBound).Visible=True'将新控件设置为可见EndSub

      控件数组的UBound属性返回该控件数组中控件的最大下标(索引值),添加索引值为Command.UBound+1(不大于32767)的控件数组元素可以保证不发生“对象已经加载”的错误。但是,由于控件数组中每个控件的索引值并不一定是连续的,即可以只添加Command(1)和Command(3)而不添加Command(2),所以即使控件数组最大索引值为32767,该控件数组也不一定有32767个对象。

      删除对象

      运行时可以使用Unload函数删除控件数组中运行时创建的控件,但设计时创建的控件不能删除。如:

      UnloadCommand(1)

      Unload函数语法与Load函数语法相似。

      属性概述

      每个控件数组本身都有4个属性,这4个属性都是设计时无效、运行时只读的;而一个单独的控件还有和控件数组相关的Index属性。

      Count属性

      Object.Count As Long

      返回控件数组中的元素个数。

      Item属性

      Object.Item (IndexAs Integer) As Object

      返回控件数组中指定下标的控件,相当于Object(IndexAs Integer) As Object。

      LBound和UBound属性

      Object.LBound As Integer

      Object.UBound As Integer

      返回控件数组中下标的最小值(LBound)或最大值(UBound)。

      Index属性

      Object.Index As Integer

      (0≤Object.Index≤32767)

      这个属性应用于控件数组中的一个控件,作用是返回或设计时设置控件在其控件数组中的下标,仅当Object属于某一控件数组时有效。

      示例

      已有一个名为“Commands”的Command控件数组,其中有一大小为900缇×450缇的Commands(0)控件。运行时单击Commands(0),则向控件数组中添加一个新控件并显示在前一个控件下方75缇处,Caption属性为其Index属性值;单击其他控件时,则从控件数组中删除该控件。

      PrivateSubCommands_Click(IndexAsInteger)WithCommandsIfIndex=0ThenIf.UBound=32767ThenExitSubLoad.Item(.UBound+1).Item(.UBound).Caption=.UBound.Item(.UBound).Top=(75+450)*.UBound+75.Item(.UBound).Visible=TrueElseUnload.Item(Index)EndIfEndWithEndSub

      这里用到了With语句,在With ... End With语句块中可以省略“Commands”标识符而直接引用其属性。

      控件数组的优点

      一方面,使用控件数组所占用的资源比单独添加每个控件所占用的资源更少,另一方面,因为控件数组的事件可以共享,如果要使多个同类型控件在一个事件中执行相同或类似的代码,使用控件数组比单独创建多个控件更方便,代码也更容易维护。

      例如,在一个窗体中有若干个Command控件,显示的内容是从1开始编号,要让用户单击某按钮时,弹出一个窗口显示其编号的平方,若不使用控件数组,则要为Command1、Command2、……、Command10控件一一添加Click事件的代码;如果日后要调整显示内容,则要一一修改每个控件的代码,非常繁琐。而控件数组就能用类似下面的代码很好地解决这个问题:

      PrivateSubCommands1_Click(IndexAsInteger)

      MsgBoxIndex^2

      EndSub

    看过“控件数组的优点”的人还看了:

    1.VB教程视频:数组的定义

    2.VB教程视频:Print方法有关的函数

    3.程序员必备的600个英语词汇

    4.VB视频教程:图形和顶边、左边位置

    5.VB教程视频:文本控件

    6.VB教程视频:字形的设置