这是交易。我尝试使用类而不是通常的模块(试图尝试一种不同的方法 [除了我所知道的] 到 OOP)。所以我使用了类,在简单的显示和隐藏表单中,我得到了一个 InvalidOperationsException 错误。奇怪的是,我删除了 OOP 部分,只是尝试直接在表单本身上调用另一个表单,但仍然遇到相同的错误。
这是我得到的错误:
创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:表单在构造过程中从默认实例引用自身,导致无限递归。在表单的构造函数中,使用“我”来引用表单。
这是代码:
Private Sub btnNewSales_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewOrder.Click
'This ought to have opened the new form via a method in the class
'order.NewOrder()
frmNewOrder.Show()
Me.Hide()
End Sub
无论哪种方式,我都会遇到同样的错误。
尝试使用模块代替。这是代码:
Public Sub ShowForm(ByVal frmName As String)
If frmName = "Order" Then
frmOrders.Show()
ElseIf frmName = "AddOrder" Then
frmAddOrder.Show()
End If
End Sub
现在到目前为止(在我所有的编程经验中)这应该可以正常工作,但它仍然返回相同的错误..
更新!
尝试删除表单调用中的所有 OOP 方面,并留下一个模块以在一个表单中简单地显示或隐藏一些控件。
这是模块中的代码:
Public Sub DesignSelect(ByVal design As String) If design = "Basic" Then frmAddOrder.lblD3.Hide() frmAddOrder.cmbD3Color.Hide() frmAddOrder.cmbD3Type.Hide() frmAddOrder.lblD4.Hide() frmAddOrder.cmbD4Color.Hide( ) frmAddOrder.cmbD4Type.Hide()
Else
End If
End Sub
如果我错了,现在请纠正我,但我相信它没有任何问题,对吧?
现在这里是使用模块的表单的代码:
Dim selectedDesign As String = ""
Private Sub frmSalesTrans_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub frmSalesTrans_FormClosing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.FormClosing
'ShowForm("Order")
frmOrders.Show()
End Sub
Private Sub rdbBasic_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdbBasic.CheckedChanged
selectedDesign = "Basic"
DesignSelect(selectedDesign)
End Sub
这是调用上述表单的表单代码:
Private Sub frmSales_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 处理 MyBase.Load
End Sub
Private Sub btnNewSales_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNewOrder.Click
Me.Hide()
frmAddOrder.Show()
End Sub
现在它让我感到困惑为什么我会收到这个错误。如果我删除了所有 OOP(包括子过程 DesignSelect),它工作正常。请告诉我这个...