Vb.net System.StackOverflowException未处理-尝试调用表单时,我遇到此错误
嗨,当我运行这个代码时,我得到了上面的错误。当我尝试运行一个有3个窗体的VBNet程序时 我只是试图将列表项从一个表单传递到另一个表单,但在程序编译之前,我遇到了一个错误Vb.net System.StackOverflowException未处理-尝试调用表单时,我遇到此错误,vb.net,forms,exception,recursion,Vb.net,Forms,Exception,Recursion,嗨,当我运行这个代码时,我得到了上面的错误。当我尝试运行一个有3个窗体的VBNet程序时 我只是试图将列表项从一个表单传递到另一个表单,但在程序编译之前,我遇到了一个错误 Public Class frmCart Dim frmComic As New comicBooks Dim frmAudio As New audioBooks Public decSubTotal As Decimal Private Sub ShowToolStripMenuItem_Click(sende
Public Class frmCart
Dim frmComic As New comicBooks
Dim frmAudio As New audioBooks
Public decSubTotal As Decimal
Private Sub ShowToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ShowToolStripMenuItem.Click
frmComic.ShowDialog()
End Sub
Private Sub ShowDialogToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ShowDialogToolStripMenuItem.Click
frmAudio.ShowDialog()
End Sub
末级
现在,金融经济正在复苏
Public Class comicBooks
Dim frmCartForm As New frmCart
Public decPrice1 As Decimal = 20.95D
Public decPrice2 As Decimal = 10.50D
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
Select Case lstComicBooks.SelectedItem
Case "Comic #1 (Print)"
frmCart.lstProductsSelected.Items.Add("Comic #1")
frmCart.decSubTotal += decPrice1
Case "The History of Scotland (Print)"
frmCart.lstProductsSelected.Items.Add("Comic #2")
frmCart.decSubTotal += decPrice2
Case Else
MessageBox.Show("Please select a Comic")
End Select
End Sub
末级
如果我只调用一次对话框,我不知道为什么它是递归的
谢谢
类comicBooks实例化一个新的frmCart。
frmCart实例化一个新的comicBooks
返回到1
删除comicBooks中的frmCartForm声明要避免递归,应将frmCart的当前实例传递到构造函数中的comicBooks类中。大概是这样的:
Public Class frmCart
Dim frmComic As New comicBooks(Me) '<--- Pass current form into constructor
End Class
Public Class comicBooks
Dim frmCartForm As frmCart '<--- variable to hold passed in form instance
Public Sub New(cartForm As frmCart) '<--- Constructor to take instance of form
Me.frmCartForm = cartForm '<--- Assign passed in reference to our variable
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
'Use frmCartForm here
End Sub
End Class
那么我应该把所有的实例放在一个模块中吗。。。我真的不知道你的应用程序应该如何工作,但不,我不建议这样做。我想冒昧地猜测一下,你是一名VB6开发人员。现在表单的工作方式不同了。表单不是设计上的单例。在一个类和另一个类中引用表单不会引用同一个表单,除非它是全局声明的对象,或者您正在将对象从一个类传递到另一个类。创建表单实例变量frmCartForm,然后继续使用默认实例frmCart。在另一种形式中相同-不使用汽车。很高兴知道它在哪条线上坠毁。