循环此程序的最佳方法是什么?

时间:2016-12-21 13:20:57

标签: vb.net loops

这是表单之一,此表单中的所有usercontrol值都将存储在My.Settings中

form

每次应用程序启动时,我都有另一个带有FlowLayoutPanel的表单, 如果Active检查,则会向FlowLayoutPanel添加一个带折扣价值的Button。

我应该将这些用户控件添加到列表中,然后遍历列表吗?或者解决这类问题的最佳方法是什么?

已更新

如何在1个代码中添加多个项目列表?系统运行到第5行时出现此错误

类型' System.NullReferenceException'的例外情况发生在XXX.exe中但未在用户代码中处理

附加信息:未将对象引用设置为对象的实例。

Public Sub RefreshDiscount(ByRef ref As scr_mainDiscount)
    Dim li_disName As New List(Of TextBox)
    Dim li_disValue As New List(Of TextBox)
    Dim li_disType As New List(Of ComboBox)
    Dim li_active As New List(Of CheckBox)
    Dim tb_disName As TextBox() = {ref.tb_name1, ref.tb_name2, ref.tb_name3, ref.tb_name4, ref.tb_name5, ref.tb_name6, ref.tb_name7, ref.tb_name8, ref.tb_name9, ref.tb_name10}
    Dim tb_disValue As TextBox() = {ref.tb_value1, ref.tb_value2, ref.tb_value3, ref.tb_value4, ref.tb_value5, ref.tb_value6, ref.tb_value7, ref.tb_value8, ref.tb_value9, ref.tb_value10}
    Dim cb_disType As ComboBox() = {ref.cb_type1, ref.cb_type2, ref.cb_type3, ref.cb_type4, ref.cb_type5, ref.cb_type6, ref.cb_type7, ref.cb_type8, ref.cb_type9, ref.cb_type10}
    Dim chkb_active As CheckBox() = {ref.CheckBox1, ref.CheckBox2, ref.CheckBox3, ref.CheckBox4, ref.CheckBox5, ref.CheckBox6, ref.CheckBox7, ref.CheckBox8, ref.CheckBox9, ref.CheckBox10}

    li_disName.AddRange(tb_disName)
    li_disValue.AddRange(tb_disValue)
    li_disType.AddRange(cb_disType)
    li_active.AddRange(chkb_active)

    For index As Integer = 0 To li_active.Count - 1
        If li_active(index).Checked = False Then
            li_disName.RemoveAt(index)
            li_disValue.RemoveAt(index)
            li_disType.RemoveAt(index)
            li_active.RemoveAt(index)
        Else
            Dim btn As New ctrl_DiscountButton
            With btn
                .Text = li_disName(index).Text
                .Price = li_disValue(index).Text
                .Type = li_disType(index).Text
            End With
            scr_sales.flp_discount.Controls.Add(btn)
        End If
    Next

    li_disName.Clear()
    li_disValue.Clear()
    li_disType.Clear()
    li_active.Clear()
End Sub

1 个答案:

答案 0 :(得分:0)

这是一个简单的示例,展示如何使用Controls.Find()的“searchAllChildren”选项“按名称”查找CheckBox1到CheckBox10:

FTableButtonDragging : boolean;
FMouseDownLocation : TPoint;
FButtonStartingLocation : TPoint;