Индивидуальное включение PictureBox, содержащегося в панелях в VB .NET 2008 - PullRequest
0 голосов
/ 24 сентября 2011

Пожалуйста, будьте терпеливы, так как английский мой второй язык. Здесь идет:

У меня такой вопрос: у меня сейчас 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, поэтому я не могу найти способ заставить ее работать.

Что бы ни было непонятным, я более чем рад уточнить, это мой первый вопрос, и я могу недооценивать сообщество или быть совершенно неясным. Заранее спасибо, и я буду ждать ваших ответов.

...