vb 控件属性 数组解决办法

合集下载

vb控件数组的使用

vb控件数组的使用

vb控件数组的使用VB控件数组是在Visual Basic开发环境中用于处理大量相似控件的一种技术。

通过创建控件数组,可以方便地对一组控件进行集成处理,从而提高代码效率。

下面将详细介绍控件数组的使用及其注意事项。

1、控件数组的声明与初始化在VB中,声明控件数组与普通变量的方法类似。

通过使用Dim语句,在程序代码中声明一个控件数组,例如:Dim myButton(10) as CommandButton这里创建了10个命令按钮的数组,可以直接操作数组元素,如:myButton(0).Caption="Button1"myButton(1).Caption="Button2"当然,你也可以使用For循环结构来初始化数组中的控件,如下所示:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25Next i上述代码使用For循环在窗体上添加了11个按钮,并将它们的Top 属性依次设置为0、25、50、75……。

2、控件数组的处理方法通过使用控件数组,可以对具有相同事件处理程序的一组控件进行集成处理。

比如,你可以使用For循环结构为这些控件注册事件,代码如下:For i = 0 To 10Set myButton(i) = Controls.Add("mandButton", "Button" & i)myButton(i).Top = i * 25AddHandler myButton(i).Click, AddressOf Buttons_ClickNext iPrivate Sub Buttons_Click()MsgBox "Clicked"End Sub这里,我们将11个按钮的Click事件都绑定到Buttons_Click事件处理程序,当任何一个按钮被单击时,都会产生一个被处理的事件。

vb控件数组

vb控件数组

关于下标变量的规定: (1)下标变量在程序中的用法和简单变量的用法一样。 (2)由于程序必须写在一行上,而且字符一样大小, 所以下标要放在小括号内,如a(3)不能写成 a3, 后者将被当作简单变量处理。 (3) 下标可以是常数、数值变量、算术表达式甚至下 标变量。下标中如含有变量,使用前应给该变量提 前赋值。例如:当i=5时,a(i)表示a(5),a(i+3) 表示a(8);如果b(3)=5,则a(b(3))表示a(5)。 (4)下标变量的下标值应该为整数,否则计算机将对 下标进行自动取整。如a(3.2)将被视为a(3) ,a(3.7)将被视为a(-4)。
6.1.4 数组元素的存放
数组中的各个元素在内存中的存储是按照一定的规律, 占据着一片连续的存储区域。例如一维数组的存放顺序就 是它的下标顺序;而多维数组的元素的存放顺序遵照下述 规定:最后一个下标先变化,第一个下标最后变化(按行 存放)。例如二维数组的存放顺序是:先行后列 ,即先存 放第一行,然后再存放第二行,以此类推。对于一个二维 数组a(m,n)中的数组元素a(i,j)在顺序存放中的序号是 i*n+j。例如当下界为1时的一个二维数组a(2,3),它的存 放顺序是:a(1,1),a(1,2),a(1,3),a(2,1),a(2,2), a(2,3)。
6.2.2 数组的应用
1. 一维数组的应用 一维数组元素只有一个下标,只要下标值确定,元素在数组中的位置也就确定了。数 学上形如数列{ai}表示的数据均可用一维数组来处理。 【例6-2-1】使用数组计算1+2+3+…+100的值 Option Base 1 ' 设置下界自动为1 Private Sub Command1_Click() Dim a(100) As Integer Dim s As Integer For i = 1 To 100 a(i) = i ' 数组的产生 Next i s = 0 ' 累加器初始化 For i = 1 To 100 s = s + a(i) Next i Print "1+2+3+…+100="; s End Sub

VB程序设计第2版教学课件55控件数组

VB程序设计第2版教学课件55控件数组

2
控件数组建立方法
【控件数组的建立方法】
【方法1】利用为控件数组命名方法建立控件数组
① 在窗体上添加同一类型的多个控件。如:Text1、Text2…… ② 单击Text2,使其处于选定状态。 ③ 在属性窗口选择“名称”,即Name属性, 并修改控件名称,即:Text1,显示对话框, 单击“是”,则建立控件数组。 ④ 对要加到数组中的控件重复第②、③步, 输入与第③步相同的名称。
10个元素,随机产生10个3位整数放入控件数组Text1中,重新排 列这10个数,将其中的奇数放在前,偶数放在后,重排后的数据 放入Text2中。
界面设计
3
动态数组应用
代码设计
Dim n As Integer
Private Sub Command1_Click()
Dim i%
Randomize
n=0
2
【说明】
控件数组说明
① 控件数组建立后,只要改变一个控件的“名称”属性,即Name属 性,并将Index属性置为空(不是0),则该控件从控件数组中删除。 ② 建立了控件数组之后,控件数组中所有控件触发同一事件过程,由 事件过程根据不同的Index值执行不同的操作。
3
动态数组应用
【应用】建立2个数组控件Text1、Text2,每个数组控件具有
For i = 0 To 9
Text1(i).Text = Int(100 + Rnd * 900)
If Text1(i).Text Mod 2 <> 0 Then
n=n+1
Байду номын сангаас
'统计奇数个数
End If
Next i
End Sub

vb net控件数组处理方法

vb net控件数组处理方法

vb net控件数组处理方法
, 控件数组, 处理方法, 简单实用
控件数组的处理方法By: LaiCQ____-4-28 16:30:27VB6有控件数组,这个是很方便的,可以将所有同类型的控件组成一个数组,方便处理,但却没有.网上找了很多方法,都不实用,现在采用如下方法可以解决问题:
方法为:采用Tag来标识各个控件
例如:
1: 加入控件:btnMain_0, btnMain_1, btnMain_2, 其Tag:分别设置为:0, 1, 2 2: 建立一个函数如下, 其可以响应不同的Button事件,这样将所有事件列在一起分别处理就不会乱了.
‘Main窗体:按钮Button的单击处理
Private Sub btnMain_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
btnMain_0.Click, btnMain_1.Click, btnMain_2.ClickDim iInde_ As IntegerOn Error GoTo SolveErriInde_ = CInt(CType(sender, Button).Tag) Select Case iInde_
Case 0 ‘按键0的处理
Case 1 ‘按键1的处理
Case 2 ‘按键2的处理
End Se
lectE_it Sub
SolveErr:
End Sub
3: 对其它类型的控件处理是一样的,只要修改:CType(sender, Button)中的Button, 如下拉列表框为:iInde_ = CInt(CType(sender, ComboBo_).Tag)。

VB 问题和解决办法

VB 问题和解决办法

1、*************************************************Visual Studio 2010中添加注册控件的方法在VC6.0中添加ADO Data Control等控件是很很方便的,"Project" --> "Add to Project" --> "Components and Controls" 中打开"Components and Controls Gallery" 对话框,双击"Registered ActiveX Controls" 目录就能找到这两个控件。

也就是说VC 6.0下是默认注册了这两个控件的(一般情况应该装完VC 6.0就有了),直接拿来用就OK。

但是在Visual Studio2010中不会自带这些控件,因此要先注册才能添加,下面以ADO Data Control控件为例,说明添加方法:1.先检查C:\WINDOWS\system32目录下有没有MSADODC.ocx这个文件(Visual Studio 2010不自带,因此,多半是没有的),没有就去下载;这是我下载的,如果有更高的版本也行/source/31985302.在VS 2010中注册MSADODC.ocx控件。

在VS 2010中点击"Tools(工具)" --> "Visual Studio Command Prompt(Visual Studio命令提示)",在出现的窗口中输入如下命令回车即可:regsvr32 msadodc.ocx3.在“工具箱”里右击,单击“选择项”,在出现的对话框中选择“COM组件”选项卡,选中“Microsoft ADO Data Control,version 6.0(OLEDB)”,点击确定,在工具箱里就会出现这个控件了,需要用的时候就可以添加ADO Data Control控件了。

VB控件数组的操作技巧

VB控件数组的操作技巧

VB控件数组的操作技巧控件数组有在设计时设置好的,也有在运行中创建的。

控件数组一方面使得程序简洁、令代码易于维护,另一方面能使程序具有灵活性。

可见,科学地利用控件数组可使编程工作的效率更高。

本文是从笔者回答网友的问题中整理出来的,与原来的回答相比略有改动。

希望这些"技巧"对大家有些帮助。

如有不妥之处,敬请指教。

一、运行中设置数组控件的属性设窗体上有若干个以 Command1 命名的命令按钮,现要求:点击其中一个按钮后,该按钮不可用,而其它的按钮均可用。

以下几行代码可以实现这个要求,比一个一个的设置高效得多。

Private Sub Command1_Click(Index As Integer)Dim i As Integer '计数器Dim comNum As Integer '按钮的索引号comNum = 0For i = 0 To Command1.Count - 1comNum = comNum + 1If comNum > Command1.Count - 1 Then comNum = 0Command1(comNum).Enabled = True '让所有按钮可用NextCommand1(Index).Enabled = False '让被单击按钮不可用End Sub二、运行中添加和卸载数组控件窗体上已有一个文本框Text1,程序需要在运行时动态地创建若干文本框,可这样实现:1.首先,设计时给Text1的Index属性设置为"0",这一步很重要:有了索引号才能创建数组控件;2.编写代码:[之前请给工程添加两个命令按钮,Name属性取缺省值,Caption属性分别为:添加、卸载]Private Sub Command1_Click()Dim txtNum As Integer 'Text1的Index号Dim Num As Integer '赋给各TextBox的值txtNum = 0 '初值Num = 1 '初值Text1(0).Text = "Text" & Num '第一个Text1的值Dim i As Integer '计数器For i = 0 To 4 '添加五个TextBoxtxtNum = txtNum + 1Num = Num + 1Load Text1(txtNum) '加载文本框Text1(txtNum).Top = Text1(txtNum - 1).Top + 450 '设置位置Text1(txtNum).Text = "Text" & Num '加载内容Text1(txtNum).Visible = True '令其可见:不能漏NextCommand1.Enabled = FalseCommand2.Enabled = TrueEnd SubPrivate Sub Command2_Click()Dim i As Integer, N As IntegerN = 0For i = 1 To Text1.Count - 1N = N + 1Unload Text1(N)NextCommand1.Enabled = TrueCommand2.Enabled = FalseEnd Sub三、给运行中添加的数组控件命名并编写事件其实例二已经给数组控件命了名,只是简单了些。

VB实验案例(数组)

VB实验案例(数组)

实验五数组一、控件属性的设置 (滚动条)1、在名称为Forml的窗体上添加一个名称为H1水平滚动条,请在属性窗口中设置它的属性值,满足下列要求:它的最小刻度值为1,最大刻度值为100,在程序运行时鼠标单击滚动条上滚动框以外的区域(不包括两边按钮),滚动框移动10个刻度。

再在滚动条下面画两个名称分别为L1、L2的标签,并分别显示1、100,运行时的窗体如图5-1所示。

工程文件名保存为sy5-1.vbp,窗体文件名为sy5-1.frm。

2、在名称为Form1的窗体上添加一个名称为HS1的水平滚动条,其刻度值范围为1 -100;添加一个命令按钮,名称为C1,标题为"移动滚动框"。

请编写适当的事件过程,使得在程序运行时,每单击命令按钮一次(假定单击次数不多于10次),滚动框向右移动10个刻度。

程序运行时的窗体如图5-2所示。

要求程序中不得使用变量,事件过程中只能写一条语句。

工程文件名保存为sy5-2.vbp,窗体文件名保存为sy5-2.frm。

3、在名称为Form1的窗体上画一个图片框,其名称为Picture1、一个水平滚动条,名称为HScroll1,和一个命令按钮,名称为Command1,标题为"设置属性",通过属性窗口在图片框中装入一个图形(文件名为pic1.jpg,位于考生目录下),图片框的高度与图形的高度相同,图片框的宽度任意(如图1所示)。

编写适当的事件过程,程序运行后,如果单击命令按钮,则设置水平滚动条的如下属性:Min 100Max 1500LargeChange 100SmallChange 10之后就可以通过移动滚动条上的滚动块来放大或缩小图片框。

程序运行后的窗体如图5-3所示。

要求程序中不得使用任何变量。

工程文件名为sy5-3.vbp,窗体文件名为sy5-3.frm。

4、在控件属性1文件夹下有一个工程文件sy5-4.vbp,窗体上有一个圆和一个矩形,还有水平和垂直滚动条各一个。

VB中ListView控件属性、方法、事件

VB中ListView控件属性、方法、事件

VB ListView控件属性、方法、事件常用属性:View设置或返回控件的视图类型值说明1-LvwIcon 图标类型2-LvwSmallIcon 小图标类型3-LvwList 列表类型4-LvwReport 报表类型Arrange 设置后返回控件的图标排列方式(在图标视图下有效)值说明1-LvwNone 不排列2-LvwAutoLeft 自动靠右排列3-LvwAutoTop 自动靠左排列Icons、SmallIcons、ColumnHeaderIcons属性Icons指定图标视图时的图标与ImageList的绑定SmallIcons、ColumnHeaderIcons指定列表视图时的图标与ImageList 的绑定PICTURE、PictureAlignment属性分别指定ListView控件的背景图片和布局方式ListItems(Index) 属性ListItems 属性是ListView控件中列表项的集合。

Index用于指定列表项集合中的一个对象,我们可以把这个对象看作对一行的引用ListItems集合的属性1. Text 设置或返回显示文本2. key 关键字3. index 索引编号4. icon , smallicon 不同视图时显示单元格的图标5. checked 给checkboxes 打√6. selected 使处于选定状态7. ListSubitems(index)集合我们可以把这个集合看作对这行中单元格的引用Text 设置或返回单元格显示的内容Reporticon 设置单元格的图标8.Subitems(index) 设置或返回单元格文本== ListSubitems (index).textColumnHeaders(index) 属性ColumnHeaders 属性是ListView控件中列标头的集合1. text 显示标题文本2. key3. index4. icon 指定标题图标5. alignment 指定index列的对齐方式(注意:第一列也就是列表项不能指定)6. position 返回当前列的索引7. subitemindex 返回指定列的listsubitem索引TextBackgroud 属性决定text的背景是透明还是ListView的背景色值0 lvwTransparent 透明1 lvw 不透明(用listview的背景色)Ghosted 属性logic决定是否虚状HideColumnHeaders 属性隐藏表头LabelWrap 属性标签转行rgeIcon 或View.SmallIcon 时才使用该属性FullRowSelect整行显示HotTracking热点追踪鼠标指针自动调整为手型HoverSelection 属性自动聚焦鼠标指针自动调整为手型AllowColumnReorder属性值设置.t.时,用户可以用鼠标选中1列拖至其他地方进行重新排列Sorted属性当值为.t.时,列表按字母排序常用方法:ListItems.add(index,key,text,icon,smallicon)向listitems添加一列表项。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vb 属性接口数组解决办法
前不久制作Activex 控件,自定义接口成员,本来想通过外界传递数组给控件,但是我没有找到设置接口成员属性为数组的方法(我是个VB初学者,直到目前也没有找到方法)。

后来发现vb中字符串长度可以存放多达2亿个字符。

想到了将数组转换为字符串然后用字符串转换为数组的方法。

整体思路:在控件外接程序中将数组生成字符串,在控件里面将得到的字符串转换为数组完成数组的传递。

举例详细代码如下宿主程序中按钮Command1单击触发以下函数运行:第一个For 循环生成x(0 to 50),y(0 to 50)两个数组。

a,b为两个字符串,其第一个字符(数字形式)存放数组元素数目一共从0到50,有51个元素。

Str()指令是将数字转换为字符数字,比如将51转换为“51”。

第二个For循环将a,b两个字符串不断的添加字符(数字转换为字符形式,采用&连接,中间用逗号隔开)。

从而a,b字符串分别是“51,0,1,2,3……,50”和“51,627.5 578.5 531.5 486.5……627.5”
控件的名称为ctr,为其设置了三个属性接口sn(布尔型) snx(字符串)sny(字符串)。

其中snx,sny分别用于承接外界传递的字符串,Sn为某个位(与该主题无关,在控件中指示另外某个事件的)Private Sub Command1_Click()
Dim cd As Integer
Dim x() As Double
Dim y() As Double
cd = 50
ReDim x(cd)
ReDim y(cd)
For i = 0 To cd Step 1
x(i) = i
y(i) = (i - 25) ^ 2 + 2.5
Next i
Dim a As String
Dim b As String
a = Str(cd + 1)
b = Str(cd + 1)
For i = 0 To cd Step 1
a = a & "," & Str(x(i))
b = b & "," & Str(y(i)) Next i
ctr.sn = True
ctr.snx = a
ctr.sny = b
End Sub
控件中程序字符串处理代码Private Sub zhunhuan()
Dim xa() As Double
Dim ya() As Double
Dim af2() As String
Dim af3() As String
af2 = Split(m_snx, ",")
af3 = Split(m_sny, ",")
Dim cd As Integer
cd = Int(Val(af2(0))) ReDim ya(cd - 1)
ReDim xa(cd - 1)
For i = 0 To (cd - 1) Step 1 xa(i) = Val(af2(i + 1)) Next i
For i = 0 To (cd - 1) Step 1
ya(i) = Val(af3(i + 1))
Next i
End Sub
上述代码split函数将字符串剥离成一个数组从而af2(),af3()中存放字符即af3()中af3(0)为“51” af3(1)为“627.5” af3(2)为“578.5”For循环中Val(af3(i + 1))将af3(i + 1)中元素由字符转换为数字即af3(1)由“627.5”变换成为627.5 从而完成了整个数组由宿主程序往控件的传递。

附:程序前面自动生成的属性代码(即在属性设置完成向导生成的代码)
Const m_def_snx = "0"
Const m_def_sny = "0"
Const m_def_sn = 0
'属性变量:
Dim m_snx As String
Dim m_sny As String
Dim m_sn As Boolean
附:程序后面生成的属性代码(应该分别有三对get,let函数以及InitProperties(),ReadProperties(PropBag As PropertyBag) ,WriteProperties(PropBag As PropertyBag)等函数因为只有下面的函数要做添加代码,其它的几个都原封不动不做修改)。

所作的修改也仅仅是在PropertyChanged "sny"后面添加了一句Call zhuanhuan也就是宿主程序中ctr.sn = True ctr.snx = a ctr.sny = b依次传递完三个属性后在最后一个属性传递完后启动zhuanhuan函数。

Public Property Let sny(ByVal New_sny As String)
m_sny = New_sny
PropertyChanged "sny"
Call zhuanhuan
End Property
作为一个初学者仅仅提出自己在项目中一个问题的解决办法,供大家讨论参考。

相关文档
最新文档