【发布时间】:2013-12-08 02:36:58
【问题描述】:
首先...如果我一开始就做错了,我愿意以不同的方式给这只猫剥皮。使用 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
正如我所说,如果我这样做是有意义的,我可以完全重写代码,或者如果我犯了某种错误,我可以修复一些东西。
例如,我正在考虑更改以擦除每个表单加载时的小计并根据切换的布尔值重建它,但似乎应该有一种更优雅的方式,开销更少,我只是做错了一些事情。
【问题讨论】:
标签: vb.net visual-studio-2010 forms checkbox vb.net-2010