Вот сделка.Я попытался использовать классы вместо обычных модулей (в попытке попробовать другой подход [помимо того, что я знаю, что это] к ООП).Поэтому я использовал классы, и при простом показе и скрытии форм я получил ошибку InvalidOperationsException.Причудлив, я удалил части ООП и просто попытался вызвать другую форму непосредственно в самой форме и все еще получил ту же ошибку.
Вот ошибка, которую я получаю:
Произошла ошибка при созданииформа.Смотрите 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
Теперь (на всем моем опыте программирования) это должно работать нормально, но все равно возвращает ту же ошибку ..
Обновление!
Попытался удалить все аспекты ООП в вызове формы и оставил модуль, чтобы просто показать или скрыть некоторые элементы управления в одной форме.
Вот код в модуле:
Public Sub DesignSelect (ByValdesign As String) If design = "Basic", то frmAddOrder.lblD3.Hide () frmAddOrder.cmbD3Color.Hide ()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.Загрузить
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
Теперь меня это просто поражаетпочему я получаю эту ошибку .. Если я удалил все ООП (включая подпроцедуру DesignSelect), он работает нормально.Пожалуйста, просветите меня об этом ...