我对这一切都非常陌生,虽然我尝试过搜索,却无法找到任何帮助我实现目标的东西。
我在VB中有一个表单,其中包含以下内容:
1 x tabcontrol 10个复选框,位于选项卡控件上的各个选项卡中 1个列表框
当我勾选任何复选框时,我希望将他们的文本添加到列表框中,当我取消勾选时,他们的文本将从列表框中删除。
我可以非常轻松地使用每个复选框的changedcheck事件的if语句实现这一点,但我必须为每个复选框执行此操作,因为我可能有20,30 40+复选框。另外,如果我稍后添加一个,我将不得不记住添加其代码。
理想情况下,我想要一个方法:检查tabcontrol中的所有复选框,如果值为true,则将其文本写入字符串,如果值为false,则从字符串中取出文本。把字符串放在列表框中。
我从这样开始......
Dim chk As CheckBox
Dim txt As String = ""
For Each chk In TabControl1.Controls
If chk.Checked = True Then
txt = txt + chk.Text +vbCrLF
Else
txt = replace(txt, chk.text + vbCrLf, "")
End If
Next
End Sub
第一个问题是上面显然不起作用!所以任何指导都值得赞赏 - 我把它从其他代码中读取碎片放在一起。
第二个问题是,我无法理解如何更新列表框,因为之前我正在为每个控件使用CheckedChanged事件,如果我按照自己的意愿行事,那么就不会有特定的CheckedChanged事件,因为它可能是任何复选框(希望这是有道理的!)。我不想按一个按钮将选中的复选框添加到列表框中,我希望它是动态的
非常感谢任何帮助。
答案 0 :(得分:0)
为您的第一个问题添加
Dim chk As Control
Dim txt As String = ""
For Each chk In TabControl1.Controls
If TypeOf chk Is CheckBox
If DirectCast(chk, CheckBox).Checked = True Then
txt = txt + chk.Text +vbCrLF
Else
txt = replace(txt, chk.text + vbCrLf, "")
End If
End If
Next
End Sub
对于CheckedChanged事件中的第二个问题,您可以执行以下操作:
Private Sub OnCheckedChanged(sender as Object, e as EventArgs) _
Handles CheckBox1.CheckedChanged
Dim chk As CheckBox = TryCast(s, CheckBox)
Dim txt as string
If c.Checked = True Then
txt = chk.Text
EndIf
End Sub