2015-10-16 2 views
0

Как новичок в VB.Net, очень случайный программист. Я изо всех сил пытаюсь найти логическую ошибку в этом утверждении. В нем говорится, что я рекурсивно называю форму, но я ее не вижу.InvalidOperationException был необработанным. Я не вижу логическую ошибку? VB.net

У меня есть новый модуль вне класса Form, где я инициализирую все свои функции. В этой функции я запрашиваю текстовые данные из нескольких текстовых полей.

' ----- A function within a module ----- 
Private Function run_stress_function() 
    'Building my class 
    Dim req_width As New Pocket_Stress_Function(CDbl(frmMain.txtPBend.Text), 
               CDbl(frmMain.txtPAllow.Text), 
               CDbl(frmMain.txtPthick.Text), 
               CDbl(frmMain.txtPwidth.Text), 1.5) 
    Return req_width.Flange_width 
End Function 

Помогите мне с логикой. Позже в том же модуле я вызываю эту строку в подкатегории:

Dim scrX As Integer = frmMain.pnlDraw.Size.Width 

И что работает отлично? Поэтому я, кажется, не хватает логики. Помогите?

Сведения об ошибке (обратите внимание, это выйти из нового модуля, поэтому я не могу использовать меня.):

System.InvalidOperationException был необработанный HResult = -2146233079 сообщение = Ошибка при создании формы. Подробнее см. Exception.InnerException. Ошибка заключается в следующем: форма, которая упоминалась во время построения из экземпляра по умолчанию, что привело к бесконечной рекурсии. В конструкторе формы обратитесь к форме с помощью «Я».

+0

Это говорит о коде в 'Sub процедуры new' в форме. не эта функция напряжения. Эта вещь могла бы получить 4 пары, но вместо того, чтобы ссылаться на форму (и, по-видимому, используя экземпляр по умолчанию) – Plutonix

+0

Я обнаружил, что при вызове формы он вызывает модуль из 'Private Sub txtPthick_TextChanged (отправитель As Object, e As EventArgs) Pocket_Link_to_Form() ' Итак, @Plutonix технически ваша вторая оценка была правильной. Мой следующий вопрос: почему загрузка и вызов формы ** textbox__TextChanged ** – CromeX

ответ

0

Ваше сообщение исключением говорит, что это все

В конструкторе формы относятся к форме, используя «Me».

Используйте его таким образом (заменить frmMain со мной)

Private Function run_stress_function() 
    Dim req_width As New Pocket_Stress_Function(CDbl(Me.txtPBend.Text), 
               CDbl(Me.txtPAllow.Text), 
               CDbl(Me.txtPthick.Text), 
               CDbl(Me.txtPwidth.Text), 1.5) 
    Return req_width.Flange_width 
End Function 
+1

Да, нет, это не работает ... помню, я сказал, что создал новый модуль ... Так что я вне класса формы. "Меня." = Ошибка BC32001 – CromeX

+0

В этом случае вы можете передать его ('Me') в качестве аргумента из вызывающей формы и добавить параметр типа формы в' run_stress_function'. – haraman

+0

Думаю, я могу передать форму через модуль. Но это не объясняет, почему позже я могу напрямую ссылаться на Dim scrX As Integer = frmMain.pnlDraw.Size.Width в том же модуле, но в другом под. – CromeX

Смежные вопросы