vb窗体,左边为不定项复选框,单击“下一学科”可将选中的学科逐一在学科textbox中显示,即循环显示。
本题由于网络的原因提交了两次,已有高手 syx54( 来自团队 VB角 )利用控件数组、IF语句、FOR语句提供了很好的答案,请参看。如有新的答案,请提供,赏分照给哈。 展开
if chk1 then text1="语文"
if chk2 then text1=text1+"数学"
If chk3 then text1=text1+"英语"
if chk4 then text1=text1+"物理"
if chk5 then text1=text1+"化学"
end sub
加油,希望能看到完整的答案,你的代码仅能在text1中显示选择了的,不能中途变更,更不能实现逐一循环显示。
你要的是单击“下一学科”按钮的事件,我就按这个事件写的。如果要动态效果的话,那就只能用复选框的单击事件,这个时候建议5个复选框和5个label控件全部使用控件数组,然后复选框的单击事件如下:
Private Sub Check1_Click(Index As Integer)
Dim x As Integer, y As String
If Check1(Index) Then
Text1 = Text1 + Label1(Index)
Else
x = InStr(Text1, Label1(Index))
y = Text1
Text1 = Left(Text1, x - 1) + Right(y, Len(y) - x - 1)
End If
End Sub
这样你随便单击哪个复选框,文本框会根据复选框的选中与否自动将所选复选框的标签显示出来
具体操作和代码。注意要求:1。学科的选择是不定的,如可选3科也可能选4科;2。显示方式是一一循环出现在学科旁的文字框内。举例:这次我选的是语文、英语、化学,右边的学科文字框中显示“语文”,单击“下一学科”,就显示为“英语”,再单击,显示“化学”,再单击,又显示“语文”;如重新选择左边的复选框,则发生相应的变化。这个模式对于数据库录入比较有用,提出来大家研究。
'呵呵,那我就不妨再献一次丑,复选框控件的名称依然使用默认值
Private Sub Command1_Click()
Static m%, n%, s() As String
Dim Ctl As Control
For Each Ctl In Me.Controls
If TypeName(Ctl) = "CheckBox" Then
If Ctl.Value = 1 Then
m = m + 1
ReDim Preserve s(m)
s(m) = Right(Ctl.Name, 1)
End If
End If
Next
Text1.Text = Controls("Check" & s(m - n)).Caption
n = n + 1
If n = m Then n = 0
m = 0
End Sub
Dim a(5) As String
Private Sub Check1_Click(Index As Integer)
aaa = Form1.Check1(Index).Caption
Text1.Text = Left(aaa, 2)
Text2.Text = Right(aaa, 2)
End Sub
Private Sub Command1_Click()
For i = 0 To 4
If Form1.Check1(i).Value = 1 Then
a(num) = Form1.Check1(i).Caption
num = num + 1
End If
Next i
For i = 0 To 4
If Left(a(i), 2) = Text1.Text Then
num_d = i + 1
If num_d >= num Then num_d = 0
Text1.Text = Left(a(num_d), 2)
Text2.Text = Right(a(num_d), 2)
Exit For
End If
Next i
End Sub
试试吧 应该可以