将tabcontrol中的所有复选框的文本获取为字符串

时间:2012-07-21 09:08:33

标签: tabcontrol checkbox

我对这一切都非常陌生,虽然我尝试过搜索,却无法找到任何帮助我实现目标的东西。

我在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事件,因为它可能是任何复选框(希望这是有道理的!)。我不想按一个按钮将选中的复选框添加到列表框中,我希望它是动态的

非常感谢任何帮助。

1 个答案:

答案 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