【问题标题】:InvalidOperationException was unhandled.. I'm not seeing the logic error? VB.netInvalidOperationException 未处理。我没有看到逻辑错误? VB.net
【发布时间】:2015-10-16 14:26:43
【问题描述】:

作为 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

而且效果很好?所以我似乎错过了逻辑。帮忙?

错误详情(注意这是来自新模块,因此我不能使用 Me。):

System.InvalidOperationException 未处理 H结果=-2146233079 Message=创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:表单在从默认实例构造期间引用自身,导致无限递归。在表单的构造函数中,使用“我”来引用表单。

【问题讨论】:

  • 在表单中讨论Sub New过程中的代码。不是那个压力函数。那个东西可能会收到 4 Doubles 虽然而不是引用表单(并且显然使用默认实例)
  • 我发现当表单被调用时,它会从Private Sub txtPthick_TextChanged(sender As Object, e As EventArgs) Pocket_Link_to_Form() 调用模块所以@Plutonix 从技术上讲,您的第二次评估是正确的。我的下一个问题是为什么表单加载和调用 textbox__TextChanged

标签: vb.net forms module


【解决方案1】:

您的异常消息说明了一切

在表单的构造函数中,使用 'Me'

引用表单

以这种方式使用它(将 frmMain 替换为 Me)

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

【讨论】:

  • 是的,不,这不起作用...记得我说过我创建了一个新模块...所以我在表单类之外..因此是“我”。 = 错误 BC32001
  • 在这种情况下,您可以将其 (Me) 作为来自调用表单的参数传递,并将表单类型参数添加到 run_stress_function
  • 我想我可以通过模块传递表单。但这并没有解释为什么以后我可以在同一个模块但不同的子模块中直接引用 Dim scrX As Integer = frmMain.pnlDraw.Size.Width。
  • 时间是一个因素。这取决于何时调用这些东西。
  • 这一切都取决于您的逻辑,事件顺序。您从哪里以及在什么上下文中调用您的函数 (run_stress_function) 以及表单 (frmMain) 是否已加载等。您对您要完成的工作的描述可能会帮助其他人以更好的方式帮助您。
猜你喜欢
  • 2015-04-20
  • 2012-12-15
  • 2011-07-12
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多