0

我对这一切都非常陌生,虽然我尝试搜索,但找不到任何帮助我实现我所追求的东西。

我在VB中有一个表格,内容如下:

1 x tabcontrol 10 x 复选框,位于选项卡控件上的各个选项卡中 1 x 列表框

当我勾选任何复选框时,我希望将它们的文本添加到列表框中,当我取消选中时,它们的文本将从列表框中获取。

我可以很容易地为每个复选框的 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 事件,如它可以是任何复选框(希望这是有道理的!)。我不想按下按钮将选中的复选框添加到列表框中,我希望它是动态的

很感谢任何形式的帮助。

4

1 回答 1

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
于 2012-07-21T09:17:44.553 回答