【问题标题】:How to specify a code module as the "Object Ref" parameter in VB.Net CallByName?如何在 VB.Net CallByName 中将代码模块指定为“Object Ref”参数?
【发布时间】:2012-04-23 00:22:03
【问题描述】:

我正在尝试根据包含子例程名称的字符串变量从 Windows 窗体调用公共子例程。子例程是代码模块中的一个过程,直接使用过程名称调用时可以正常工作。

VB.net 函数 CallByName 应该可以工作,但我不知道如何将模块名称指定为“Object Ref”参数。

在显示的代码中,“ReportLibrary”是一个包含公共 sub 的模块,其名称包含在字符串 strReportProcedure 中。这会导致以下错误帮助程序:

帮助说明了 ObjectRef 参数:

对象引用
类型:System.Object
必需的。目的。指向公开属性或方法的对象的指针。

我遗漏了什么,还是无法使用 CallByName 从模块调用例程?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    CallByName 不适用于 VB.Net 模块中的代码,因为第一个参数需要一个对象。您需要将方法移动到一个类中,然后创建该类的一个实例以使 CallByName 起作用。

    【讨论】:

    • 我会试试看的。谢谢!
    • 不是最佳方式。在我的情况下,我不能移动它们,因为之后会有混乱;)
    【解决方案2】:

    嗯,我认为问题出在其他地方。 我认为您还没有声明这样的变量:

    Dim RL as NEW Reportlibrary
    

    在声明之后,使用这个:

    CallByName(RL, strReportProcedure , CallType.Method , blnPreview)
    

    可能问题出在声明中,因为(在您的情况下)您的类不允许您访问库的子例程。这就是您需要声明“作为新报告库”的原因。
    祝你好运!

    【讨论】:

      【解决方案3】:

      Dim object As NEW Reportlibrary 然后使用该对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多