VB6 多个同类控件的相同事件,代码如何重用?
VisualBasic6.0怎么样实现同类控件相同事件,代码的重用呢?比如有三个TextBox:Text1,Text2,Text3.PrivateSubText1_Got...
Visual Basic 6.0
怎么样实现同类控件相同事件,代码的重用呢?
比如有三个TextBox: Text1,Text2,Text3.
Private Sub Text1_GotFocus()
Text1.alignment=0
End Sub
Private Sub Text2_GotFocus()
Text2.alignment=0
End Sub
Private Sub Text3_GotFocus()
Text3.alignment=0
End Sub
怎么才能只写一次,而不必每一次都重写呢?
因为我需要写上百个相同的控件。。。不重用,全篇代码就没法看了。
感谢高手,请附代码。 通过的话一定加分!
不好意思。
不可以用数组的办法。
因为它们的用途不同。
如果用数组,那么再当调用他们时,就麻烦死了。。。
必须用不同的名字。谢谢各位了~
-----------------------------
我对自定义控件很感兴趣。
能帮忙写一下怎么弄吗?
我先加50分,写好了再加50一起给你 展开
怎么样实现同类控件相同事件,代码的重用呢?
比如有三个TextBox: Text1,Text2,Text3.
Private Sub Text1_GotFocus()
Text1.alignment=0
End Sub
Private Sub Text2_GotFocus()
Text2.alignment=0
End Sub
Private Sub Text3_GotFocus()
Text3.alignment=0
End Sub
怎么才能只写一次,而不必每一次都重写呢?
因为我需要写上百个相同的控件。。。不重用,全篇代码就没法看了。
感谢高手,请附代码。 通过的话一定加分!
不好意思。
不可以用数组的办法。
因为它们的用途不同。
如果用数组,那么再当调用他们时,就麻烦死了。。。
必须用不同的名字。谢谢各位了~
-----------------------------
我对自定义控件很感兴趣。
能帮忙写一下怎么弄吗?
我先加50分,写好了再加50一起给你 展开
展开全部
你的意思是说这些文本框的用途不一样,每一个都不能同时设置alignment对吧,
看看我的方法行不?
其实可以用控件数组的,textbox有一个tag属性,你在不同用途的textbox写上不一样的tag值.到时根据选择tag值来相应的操作
比如你定义所有tag=1的文本框在GotFotus时,Alignmeng=0
定义所有tag=2的文本框在GotFotus时,Alignmeng=1
定义所有tag=3的文本框在GotFotus时,Alignmeng=2
定义所有tag=4的文本框在GotFotus时,全选
……
那么你可以这样写
Private Sub Text1_GotFocus(Index As Integer)
Select Case Text1(Index).Tag
Case 1: Text1(Index).Alignment = 0
Case 2: Text1(Index).Alignment = 1
Case 3: Text1(Index).Alignment = 2
Case 4:
Text1(Index).SelStart = 0
Text1(Index).SelLength = Len(Text1(Index))
Case Else
End Select
End Sub
觉得好就再加点分吧,谢谢!
看看我的方法行不?
其实可以用控件数组的,textbox有一个tag属性,你在不同用途的textbox写上不一样的tag值.到时根据选择tag值来相应的操作
比如你定义所有tag=1的文本框在GotFotus时,Alignmeng=0
定义所有tag=2的文本框在GotFotus时,Alignmeng=1
定义所有tag=3的文本框在GotFotus时,Alignmeng=2
定义所有tag=4的文本框在GotFotus时,全选
……
那么你可以这样写
Private Sub Text1_GotFocus(Index As Integer)
Select Case Text1(Index).Tag
Case 1: Text1(Index).Alignment = 0
Case 2: Text1(Index).Alignment = 1
Case 3: Text1(Index).Alignment = 2
Case 4:
Text1(Index).SelStart = 0
Text1(Index).SelLength = Len(Text1(Index))
Case Else
End Select
End Sub
觉得好就再加点分吧,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你的补充,可以把相同代码放入一个通用过程中,然后在用到它时简单调用即可(当然,你举的例子重复的代码不长,如果很长,本做法就显示出明显的优势):
'通用过程
Sub align(objectName As Object)
Call CallByName(objectName, "alignment", VbLet, 1)
End Sub
Private Sub Text1_GotFocus(Index As Integer)
align text1
End Sub
Private Sub Text2_GotFocus(Index As Integer)
align text2
End Sub
。。。
'通用过程
Sub align(objectName As Object)
Call CallByName(objectName, "alignment", VbLet, 1)
End Sub
Private Sub Text1_GotFocus(Index As Integer)
align text1
End Sub
Private Sub Text2_GotFocus(Index As Integer)
align text2
End Sub
。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
添加一个timer,设置其interval=10,复制以下代码:
Private Sub Timer1_Timer()
If TypeOf Me.ActiveControl Is TextBox Then Me.ActiveControl.Alignment = 0
End Sub
Private Sub Timer1_Timer()
If TypeOf Me.ActiveControl Is TextBox Then Me.ActiveControl.Alignment = 0
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好用数组控件,text11(0),text11(1),text11(2),这样就可以了
当然,也可以写个子程序,调用
当然,也可以写个子程序,调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用数组控件,text1(0),text1(1),text1(2)....比如有三个textbox的话,代码这么写,
Private Sub Text1_GotFocus(Index As Integer)
For i = 0 To 2
If i = Index Then
Text1(i).Alignment = 0
End If
Next i
End Sub
如果有100个textbox那么就改For i = 0 To 2为For i = 0 To 99.首先你要知道数组控件怎么用。
Private Sub Text1_GotFocus(Index As Integer)
For i = 0 To 2
If i = Index Then
Text1(i).Alignment = 0
End If
Next i
End Sub
如果有100个textbox那么就改For i = 0 To 2为For i = 0 To 99.首先你要知道数组控件怎么用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询