Пожалуйста, будьте терпеливы, так как английский мой второй язык. Здесь идет:
У меня такой вопрос: у меня сейчас WinForm, который содержит 12 панелей. Я запрограммировал эти 12 панелей, чтобы они отображались в группах по 4, 6 или 12, в зависимости от количества месяцев платежей, которые выбирает клиент.
Вторая часть форматирования формы - отключение PictureBox, который находится внутри панели, если клиент уже заплатил за этот месяц. Этот PictureBox имеет поведение, связанное с событием щелчка, и он используется для оплаты платежа за этот месяц.
Для этого форматирования у меня есть этот код:
Private Sub disableIFPayed()
For i = 0 To pContract.pPaymentPlan.pPayments.Count - 1
Dim str As String
str = "pbPayment" & i + 1
For Each ctrl As Control In Me.Controls
If TypeOf (ctrl) Is Panel Then
Dim stri As String = ctrl.Controls.Item(1).Name
If stri = str Then
If pContract.pPaymentPlan.pPayments(i).pPayedFor = True Then
ctrl.Controls.Item(str).Enabled = False
Else
ctrl.Controls.Item(str).Enabled = True
End If
End If
End If
Next
Next
End Sub
Где pPayedFor - логическое свойство, указывающее, есть ли оплата за этот месяц и этот контракт.
Контракт составляется с помощью paymentPlan, в котором есть listOf (Payment).
Проблема, с которой я столкнулся, заключается в том, что всякий раз, когда один PicutreBox изменяется на enabled = false, все остальные также отключаются.
Раньше у меня была эта проблема с коллекциями, но я обходил их, собирая каждый элемент и уничтожая его после того, как он был назначен на свою позицию. Сейчас я не понимаю, как получить контроль над созданием коллекции Control, поэтому я не могу найти способ заставить ее работать.
Что бы ни было непонятным, я более чем рад уточнить, это мой первый вопрос, и я могу недооценивать сообщество или быть совершенно неясным. Заранее спасибо, и я буду ждать ваших ответов.