在运行时动态更改两个复选框ForeColor

时间:2016-12-29 07:28:15

标签: vb.net

所以我在visual studio 2008中有这个程序,让用户选择一个月和一年,然后动态更改所有前面颜色的复选框,文本对应于所选月份的星期六和星期日的日期。

让我们在第一次运行时说“让我= 1”,这是第一个星期日和2017年1月的第一天((UTC-08:00)太平洋时间(美国和加拿大))

我知道使用for each会让程序循环到Me.Controls中的每个控件,所以我认为它不会读取第一个IF语句

    If cb.Text = i-1

并且只有ELIF会退出FOR LOOP。

但如果我将第一个语句改为

    if cb.Text = i+1

它奏效了。有人请告诉我它有什么问题。我认为这只是错误或警告这个逻辑错误吗?

    Dim cb
        While i < 31
            For Each cb In Me.Controls
                If TypeOf cb Is CheckBox Then
                    If cb.Text = i - 1 Then
                        cb.ForeColor = Color.Blue
                    ElseIf cb.Text = i Then
                        cb.ForeColor = Color.Red
                        Exit For
                    End If
                End If
            Next
            i += 7
        End While

1 个答案:

答案 0 :(得分:0)

所以这就是我解决自己问题的方法,让用户选择一个月和一年,计算天数和第一个星期天再继续....

这是因为FOR EACH LOOP以您在控件组或表单中添加的最后一个控件开始,因此我使用了正常的FOR LOOP并直接转换对象,因此它将查看控件的名称,名称必须以阵列的方式排列。像c1,c2,c3 ....

toDatePickerDialog.show()