label判断 vb

[复制链接]
查看11 | 回复2 | 2008-7-19 10:22:52 | 显示全部楼层 |阅读模式
我没用数组,用了很多label做了个打字程序
其中6个label从程序顶部下沉,到frame1底部响应停止事件,现遇到问题是如果6个label里有两个label显示相同的string,如何让程序自动判断从下往上的执行顺序。请高手指教,如何改代码,谢谢。
text代码如下:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If UCase(RTrim(Text1.Text)) = UCase(Label11.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label1.Top = 0
Init1
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
ElseIf UCase(RTrim(Text1.Text)) = UCase(Label12.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label2.Top = 0
Init2
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
ElseIf UCase(RTrim(Text1.Text)) = UCase(Label13.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label3.Top = 0
Init3
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
ElseIf UCase(RTrim(Text1.Text)) = UCase(Label14.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label4.Top = 0
Init4
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
ElseIf UCase(RTrim(Text1.Text)) = UCase(Label15.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label5.Top = 0
Init5
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
ElseIf UCase(RTrim(Text1.Text)) = UCase(Label16.Caption) Then
Text1.Text = ""
Text1.SetFocus
Label6.Top = 0
Init6
Label24.Caption = Val(Label24.Caption) + 1
Label7.Caption = "正确"
Label7.BackColor = &HFF00&
Label7.FontSize = 28
Else
Text1.Text = ""
Label7.Caption = "错误"
Label7.BackColor = &HFF&
Label7.FontSize = 28
End If
End If
If KeyAscii = 27 Then
Text1.Text = ""
End If
End Sub
程序运行如下~
当程序开始时,label1到label6的caption随机读取目录下固定txt文件里的string,从frame1顶部垂直向下移动(移动秩序错乱),当label1~6只要有一个到达frame1底部,响应结束事件,当text1输入与label1~6其中一个相同,其重新随机读取txt里的string,并重新从frame1顶部下沉。
遇到的问题是,比如当label1和6显示相同的string时,而label6将要比label1先到达frame1底部触发结束事件,text1输入并没有执行label6,而执行了label1。
请教高手的目的是修改代码使程序运行时如果有两个相同label能自行判断执行秩序,即快到达底部的先执行。
或修改代码防止label1~6显示相同的string。
代码补充如下:init1~6代码相同,因字数限制就放了init1的。
Dim MaxLine As Long
Dim sFilePath As String
Sub Init1()
Dim s As String, a
Randomize
Do
s = RndLine(Int(Rnd * MaxLine) + 1)
a = Split(s, """ """)
Loop While UBound(a) = 0
Label1.Caption = Replace(Trim(a(0)), """", "")
Label11.Caption = Replace(Trim(a(1)), """", "")
End Sub
text输入代码就是原问题中的那些

回复

使用道具 举报

千问 | 2008-7-19 10:22:52 | 显示全部楼层
1、你不用数组是程序很麻烦。同样的代码你重复了6遍!2、只能按照label的top属性来进行比较,然后区分。答案补充:修代码很容易,我下面帮你做。但是你先把“现遇到问题是如果6个label里有两个label显示相同的string,如何让程序自动判断从下往上的执行顺序。”解释清楚,不然我做的代码也不知道是否有用。'答案再补充:'首先,建立label的控件数组。先在你的框架上,悔之已各label,默认为label1。'不要做别的,立即按下ctrl-c,然后选中框架按下ctrl-v。在弹出的对话框里点“是”。'然后,再选中框架按下ctrl-v,共四次。就建立控件数组label1(0)到label1(5)。'labe
回复

使用道具 举报

千问 | 2008-7-19 10:22:52 | 显示全部楼层
最好用label数组。然后用long数组(如定义lngLabel(5))匹配label编号,lable的top属性按大小排列,Label11换为按大小排列的label10(lngLabel(0))),Label12换为按大小排列的label10(lngLabel(1)))...。不用数组的话,定义label变量:Dim myLabel(5) As L
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行