我正在尝试为此做一个循环,这就是我所做的,但它不起作用



当组合框项为0时,我想将所有标签、复选框和组合框设置为Enabled

For i = 1 To 5
Dim MycbmQty As ComboBox = CType(Me.Controls("cbmQty" & i), ComboBox)
Dim myLabel As Label = CType(Me.Controls("lblSumname" & i), Label)
Dim MybtnSum As Button = CType(Me.Controls("btnSum" & i), Button)
Dim myLabel2 As Label = CType(Me.Controls("lblSumPrice" & i), Label)
Dim myLabel3 As Label = CType(Me.Controls("lblPriceTit" & i), Label)
Dim myLabel4 As Label = CType(Me.Controls("lblQtyTit" & i), Label)
Dim mychkname As CheckBox = CType(Me.Controls("chkName" & i), CheckBox)
If MycbmQty.SelectedIndex = 0 Then
myLabel.Enabled = False
MybtnSum.Enabled = False
myLabel2.Enabled = False
myLabel3.Enabled = False
myLabel4.Enabled = False
mychkname.Checked = False
MycbmQty.Enabled = False
End If
Next

然而,如果我改为这样做,它会起作用。

Private Sub cbmQty1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbmQty1.SelectedIndexChanged

If cbmQty1.SelectedIndex = 0 Then
lblSumName1.Enabled = False
btnSum1.Enabled = False
lblSumPrice1.Enabled = False
lblPriceTit1.Enabled = False
lblQtyTit1.Enabled = False
cbmQty1.Enabled = False
chkName1.Checked = False
End If

End Sub

Private Sub cbmQty2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbmQty2.SelectedIndexChanged

If cbmQty2.SelectedIndex = 0 Then
lblSumName2.Enabled = False
btnSum2.Enabled = False
lblSumPrice2.Enabled = False
lblPriceTit2.Enabled = False
lblQtyTit2.Enabled = False
cbmQty2.Enabled = False
chkName2.Checked = False
End If

End Sub
Private Sub cbmQty3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbmQty3.SelectedIndexChanged

If cbmQty3.SelectedIndex = 0 Then
lblSumName3.Enabled = False
btnSum3.Enabled = False
lblSumPrice3.Enabled = False
lblPriceTit3.Enabled = False
lblQtyTit3.Enabled = False
cbmQty3.Enabled = False
chkName3.Checked = False
End If

End Sub
Private Sub cbmQty4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbmQty4.SelectedIndexChanged

If cbmQty4.SelectedIndex = 0 Then
lblSumName4.Enabled = False
btnSum4.Enabled = False
lblSumPrice4.Enabled = False
lblPriceTit4.Enabled = False
lblQtyTit4.Enabled = False
cbmQty4.Enabled = False
chkName4.Checked = False
End If

End Sub
Private Sub cbmQty5_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbmQty5.SelectedIndexChanged

If cbmQty5.SelectedIndex = 0 Then
lblSumName5.Enabled = False
btnSum5.Enabled = False
lblSumPrice5.Enabled = False
lblPriceTit5.Enabled = False
lblQtyTit5.Enabled = False
cbmQty5.Enabled = False
chkName5.Checked = False
End If

End Sub

您不捕获Change事件,而是查询循环中的实际状态。

目标是AddHandler线。

Sub main

For i = 1 To 5
Dim MycbmQty As ComboBox = CType(Me.Controls("cbmQty" & i), ComboBox)
Dim myLabel As Label = CType(Me.Controls("lblSumname" & i), Label)
Dim MybtnSum As Button = CType(Me.Controls("btnSum" & i), Button)
Dim myLabel2 As Label = CType(Me.Controls("lblSumPrice" & i), Label)
Dim myLabel3 As Label = CType(Me.Controls("lblPriceTit" & i), Label)
Dim myLabel4 As Label = CType(Me.Controls("lblQtyTit" & i), Label)
Dim mychkname As CheckBox = CType(Me.Controls("chkName" & i), CheckBox)

AddHandler MycbmQty.SelectedIndexChanged, 
Sub()
If MycbmQty.SelectedIndex = 0 Then
lblSumName2.Enabled = False
btnSum2.Enabled = False
lblSumPrice2.Enabled = False
lblPriceTit2.Enabled = False
lblQtyTit2.Enabled = False
cbmQty2.Enabled = False
chkName2.Checked = False
End If
End Sub                                                       
Next
end sub 

最新更新