打开表单时发生复选框事件,重新加载表单时会触发关闭事件

问题描述 投票:1回答:2

首先...如果我开始做错了,我愿意用另一种方式给这只猫剥皮。使用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 2010 .net 4.0,我是一个初学者。我正在制作一个商品开票应用程序,它的...

vb.net visual-studio-2010 forms checkbox vb.net-2010
2个回答
2
投票

加载表单时,必须告诉支票和无线电忽略事件的情况并不常见。您只需要忽略或加载标志:


0
投票

[如果有人正在寻找替代方案或有类似问题,这是我检测事件变化的解决方法,因此重新加载复选框不会被触发:

© www.soinside.com 2019 - 2024. All rights reserved.