【问题标题】:Getting the text of all check boxes in a tabcontrol to a string将选项卡控件中所有复选框的文本获取为字符串
【发布时间】:2017-02-20 05:39:54
【问题描述】:

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

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: tabcontrol checkbox


    【解决方案1】:

    为你的第一个问题添加

    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
    

    【讨论】:

    • 非常感谢@jacob Seleznev 的回复,我可以看到您对TypeOf 所做的一切,但由于我的tabcontrol 中的所有控件始终都是复选框,我不会认为它需要那个? - 虽然我会相信你的话,因为显然不知道更好!不幸的是,当使用您修改的代码时,我得到以下信息...检查过的不是“System.Windows.Forms.Control”的成员。这可能是我应该知道的非常基本的事情,你能指出我正确的方向吗?再次感谢
    • @StephenDraper 您需要输入 cast chk 到 CheckBox。请参阅我编辑的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多