【问题标题】:Iterating checkboxes in order in groupbox在 groupbox 中按顺序迭代复选框
【发布时间】:2015-08-20 12:50:35
【问题描述】:

我目前正在学习 VB.NET

我对阅读复选框(或文本框或组合框)或在组框中阅读有疑问

例如我有这个窗体

我有类似的代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For Each cb As CheckBox In GroupBox1.Controls
        MsgBox(cb.Name)
    Next
End Sub

我期待阅读复选框 1 -> 2 -> 3-> 4 -> 5

但是,它有时读作 5​​->4->3->2->1 或 3->4->2->1->5

我在想“Tabindex”可能会影响阅读顺序,所以我为每个复选框更改了 TabIndex。但是,更改阅读复选框的顺序并不影响

有什么方法可以控制 groupbox 中复选框(或任何东西)的读取顺序吗?

谢谢

----- 更新------

我对 Linq 有了想法。 我认为这将是解决此问题的最简单方法。 当我得到正确答案时我会更新 谢谢**

【问题讨论】:

  • 而不是迭代控件/对象引用,您可以使用包含其名称的List(of String),它们应该在 ZOrder 中,但是当您摆弄表单时会发生变化,因此如果您有代码取决于在订单上,使用列表。
  • @Plutonix 感谢您的帮助。这是示例代码。如果表单的选项复选框数量超过 10 个,则搜索名称可能难以实现。(例如使用嵌套循环和使用选择案例查找正确的复选框)我正在研究如何基于迭代简化代码:(跨度>
  • 有多复杂? 可以以任何格式创建任何你需要的名称。使用字符串集合进行迭代并不比控件集合难
  • @Plutonix 我在想控制 25-30 复选框。而且,我有 arraylist 以确保我需要选中或取消选中组框中的每个复选框。你能提供我可以研究的简单例子吗?我不确定如何使用“List(of String)”来选中或取消选中 groupbox 中的每个复选框。我知道我可以在组框中设置每个复选框的名称。但是,我真的不知道如何应用 List(of String) 来解决这个问题:(
  • 如果您现在有 2 位彼此(和控件)相关的信息 - 复选框的名称和状态。我会使用一个类来保存信息。你知道他们吗?

标签: vb.net forms checkbox groupbox


【解决方案1】:
for i = to 1 to numberofcheckboxes
 if Directcast("checkbox" & i, Checkbox).Checked = True Then
    'do something
 end if
next

当然你可以改变方法。检查最适合你的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2022-06-12
    相关资源
    最近更新 更多