【问题标题】:Can't reference sub-routines in other modules of VB.net programVB.net程序其他模块不能引用子程序
【发布时间】:2015-05-22 21:00:12
【问题描述】:

我有一个从别人那里收到的 VB.net 程序。我正在尝试对其进行修改。该程序由一种主要形式和 6 个类(所有 .vb 文件)组成。

在主窗体中,我想在其他模块之一中调用子例程。奇怪的是,如果我输入模块的名称后跟一个“。”,即

QuoteMgr.

我没有看到模块中子例程的名称。我只看到已定义的 Public Const。

我要调用的子程序在一个标记为:

的部分中
#Region "Methods"

我需要做什么才能调用这些方法之一?

【问题讨论】:

  • Subs 是如何声明的?他们是Shared 和/或Private
  • 他们是“公共”潜艇
  • #region 标签仅用于 Visual Studio 中的组织目的,在编码意义上不会影响您可以做什么和不可以做什么。
  • 如果你键入你想要调用的方法,它会给你什么样的错误(Intellisense 是否让你完成它?)
  • 查看 Alex 的回答 here AndAlso Object's and Classes in VB

标签: vb.net visual-studio-2013


【解决方案1】:

混淆是因为您在将原始问题编辑为“类”而不是“模块”之前在原始问题中使用的措辞。

VB.net 中的两个术语的含义完全不同。类通常必须实例化为对象才能调用其方法。

所以你需要做的是:

dim qt as new QuoteMgr
qt.Method("foo");

在这种情况下,您将创建一个名为 qt 的 QuoteMgr 实例,然后调用它的方法。或者,您可以修改 QuoteMgr 类并将您尝试调用的方法设置为“Shared”,然后像之前尝试的那样通过简单地“QuoteMgr.Method”来调用它。

模块更像是一个独立的方法库,可以被同一个项目中的任何东西调用(默认情况下)。

【讨论】:

  • 谢谢。我把它放进去,但得到了“qt”的以下错误消息:Argument not specified for parameter 'oKernel' of 'Public Sub New(oMainSymbol As String, ByRef oKernel As Kernel)'
  • @AliceMeade:当您使用Dim qt As New QuoteMgr 创建一个QuoteMgr 对象时,您正在调用名为New 的QuoteMgr 类中的一个Sub。在您的情况下,Sub 需要两个参数,一个是 String 类型,一个是 Kernel 类型。这些参数所需的值取决于您的应用程序的工作方式。
猜你喜欢
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2012-01-29
  • 2019-02-24
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多