100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > VB:动态添加控件的示例

VB:动态添加控件的示例

时间:2024-07-26 00:29:30

相关推荐

VB:动态添加控件的示例

本文链接:/nxhujiee/article/details/5950877

在VB开发中,向窗口上添加控件有两种方法,一是设计阶段,一是运行阶段。比较简单的是在设计阶段完成的。但很多时候我们无法确定需要多少个控件,比如编写一个多页记事本,我们不可能在设计阶段就添加几十或上百个编辑框在窗口上,因为你不知道用户会打开多少个文件。

在程序运行阶段用代码动态添加控件是一种常见的方法。如上面的例子中我们就需要动态添加编辑框,用户每打开一个文件,就动态添加一个编辑框。

动态添加控件使用controls对象的add方法,格式:

controls.add (添加控件的类名,控件的名称,所属的父窗体)

下面是我写好的一个多页面记事本的框架。动态添加和引用部分我都已经写好了,没有写编辑功能的代码。如果你想拥有一个自己的记事本,可以下载后自己添加相关的代码,给自己打造一个适合自己的记事本。

动态添加、引用控件的相关代码

PrivateSubmnuFileNew_Click()"新建

Calladdtab

EndSub

PrivateSubaddtab()"新建时动态添加编辑控件

DimaAsMSWLess.WLText

DimiAsInteger

DimhdAsLong

SSTab1.Tabs=SSTab1.Tabs+1

SSTab1.Tab=SSTab1.Tabs-1

i=SSTab1.Tabs

SSTab1.TabsPerRow=i+1

Seta=Me.Controls.Add("MSWLess.WLText","rtbox"&CStr(i-1),SSTab1)"第3个参数指定了父窗体为SSTab1

a.Move60,360,sw,sh

a.Tag=i-1

Debug.Printi,SSTab1.Tab,a.Tag,a.Name

a.Text="新文件"&CStr(i)

SSTab1.Caption="新文件"&CStr(i)

a.Visible=True

a.MultiLine=True

a.ScrollBars=wlVertical

"hd=SetParent(a.hWnd,SSTab1.hWnd)‘这里就可以不用指定父窗体了

EndSub

PrivateSubForm_Resize()"同步缩放

SSTab1.Width=Me.Width-100

SSTab1.Height=Me.ScaleHeight-670

sw=SSTab1.Width-125

sh=SSTab1.Height-425

sl=60

st=360

"----------------以下引用动态控件------------------------------

DimiAsInteger

DimaAsString

i=SSTab1.Tab

a="rtbox"&CStr(i)

Ifa="rtbox0"Thena="wltext1"

Me.Controls(a).Move60,360,sw,sh

"------也可以用下面的方法调整全部编辑框大小-------

"DimbAsControl

"ForEachbInMe.Controls

"IfTypeOfbIsWLTextThen

"b.Move60,360,sw,sh

"EndIf

"Next

EndSub

PrivateSubSSTab1_Click(PreviousTabAsInteger)

DimiAsInteger

DimtbAsWLText

IfSSTab1.Tab=0Then

WLText1.Move60,360,sw,sh

EndIf

"---------------重要:根据名称引用动态控件/点击TAB标签时自动缩放当前页-----------------

DimaAsControl

ForEachaInMe.Controls

IfTypeOfaIsWLTextThen

Ifa.Name="rtbox"&SSTab1.TabThen

a.Move60,360,sw,sh

EndIf

EndIf

Next

EndSub

PrivateSubSSTab1_DblClick()"双击隐藏当前文章

DimiAsInteger

i=SSTab1.Tab

Ifi<>0ThenSSTab1.TabVisible(i)=False

EndSub

PrivateSubmnuFileOpen_Click()"打开文件

DimsFileAsString

DimiAsInteger

DimaAsString

Dimstring1AsString

WithdlgCommonDialog

.DialogTitle="打开"

.CancelError=False

.Filter="所有文件(*.*)|*.*"

.ShowOpen

IfLen(.FileName)=0Then

ExitSub

EndIf

sFile=.FileName

OpendlgCommonDialog.FileNameForInputAs#1

string1=StrConv(InputB$(LOF(1),1),vbUnicode)

"----------------以下引用动态控件------------------------------

i=SSTab1.Tab

a="rtbox"&CStr(i)

Ifa="rtbox0"Thena="wltext1"

Me.Controls(a).Text=string1

"-------------------------------------------------------------------

Close#1

EndWith

EndSub

源码下载:

http://good.gd/762657.htm

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。