Во-первых... Я готов содрать шкуру с этого кота по-другому, если с самого начала сделаю это неправильно. Используя VB 2010 .net 4.0, я очень новичок.
Я делаю приложение для выставления счетов за продукт, которое имеет основную форму и подчиненную форму с дополнительными параметрами. Всякий раз, когда эта подчиненная форма повторно открывается после того, как была открыта один раз, выбранные события флажка по умолчанию пусты. Если я перепроверю их (чтобы кто-то мог снять отметку), то все перепроверенные все перезапускаются и снова увеличивают переменную.
В конечном итоге мне нужно иметь возможность открывать эту вторую форму после ее закрытия, отображать все флажки, которые были выбраны ранее, как выбранные снова, и не увеличивать переменную в процессе.
Основная форма Код флажка для установки логических значений и увеличения или уменьшения переменной промежуточного итога наиболее часто используемых продуктов.
Private Sub chkbox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkbox1.CheckedChanged
If chkbox1.Checked = True Then
bChkbox1 = True
Subtotal += 15
Else
bChkbox1 = False
Subtotal -= 15
End If
End Sub
Кнопка главной формы для запуска подчиненной формы со всеми перечисленными продуктами.
Private Sub btnAllProducts_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAllProducts.Click
Form3.Show()
End Sub
Код флажка подчиненной формы отлично работает при первом открытии, но не при повторном запуске.
Private Sub chkbox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkbox2.CheckedChanged
If chkbox2.Checked = True Then 'also tried without the nested if with same results
If Me.IsHandleCreated = True Then 'me.visible behaves the same way
MsgBox("form visible true")'launches after clicking button but before form is actually on screen
Form1.bcheckbox2 = True
Form1.Subtotal += 105
End If
Else
Form1.bcheckbox2 = False
Form1.Subtotal -= 105
End If
End Sub
Булевы значения используются для установки флажков, которые были отмечены на главной странице или когда она была открыта ранее.
If Form1.bcheckbox2 = True Then
chkbox2.Checked = True
End If
Как я уже сказал, я могу полностью переработать код, если в этом есть смысл, или просто исправить что-то, если я допустил какую-то ошибку.
Например, я думал об изменении, чтобы стереть промежуточный итог при каждой загрузке формы и перестроить его на основе переключаемых логических значений, но кажется, что должен быть гораздо более элегантный способ с меньшими накладными расходами, и я просто делаю что-то неправильно.