gpt4 book ai didi

vb.net - 在另一个类中调用过程

转载 作者:行者123 更新时间:2023-12-01 10:08:09 27 4
gpt4 key购买 nike

我已经为 outlook 2010 创建了一个加载项。我有一个带有按钮的功能区。当您单击该按钮时,我希望它调用 ThisAddIn.vb 中的过程。

有两个文件:ThisAddin.vb 和 Ribbon.vb。

我尝试了很多方法都无济于事。我也把所有的程序都公开了。

调用 Testing123()

调用 ThisAddIn.Testing123()

等等

如何正确调用此过程?

****Ribbon1.vb****
Imports Microsoft.Office.Tools.Ribbon


Public Class MyOutlookTab

Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click

Call Testing123()

End Sub

End Class


***ThisAddIn.vb***
Public Class ThisAddIn

Public Sub Testing123()
System.Windows.Forms.MessageBox.Show("It Works!")

End Sub

End Class

最佳答案

问题是您试图在不创建类的情况下引用类方法。

您可以通过三个选项来完成这项工作:

1) 将 ThisAddIn 转换为 Module。那么访问 Testing123 方法就不会出现任何问题,因为您当前拥有它。

2) 将 ThisAddin.Testing123 转换为 Shared 方法,即:

Public Shared Sub Testing123()

然后你会访问如下:

Call ThisAddin.Testing123()

3) 在使用 ThisAddIn 类的方法之前创建一个实例:

Dim oAddIn As New ThisAddIn
Call oAddIn.Testing123()

更新

看来插件的处理方式与标准类不同。

This MSDN article包含从其他类型的解决方案访问插件功能的具体实现指南。

根据本文,您需要执行几个额外的步骤:

1) 创建一个接口(interface)来公开您的插件的功能:

<ComVisible(True)> _
Public Interface IAddInUtilities
Sub Testing123()
End Interface

2) 将实用程序类添加到您的插件项目:

<ComVisible(True)> _
<ClassInterface(ClassInterfaceType.None)> _
Public Class AddInUtilities
Implements IAddInUtilities

Public Sub Testing123() Implements IAddInUtilities.Testing123
System.Windows.Forms.MessageBox.Show("It Works!")
End Sub
End Class

3) 将以下内容添加到 ThisAddIn 以将实用程序公开给外部调用者:

Private utilities As AddInUtilities

Protected Overrides Function RequestComAddInAutomationService() As Object
If utilities Is Nothing Then
utilities = New AddInUtilities()
End If
Return utilities
End Function

4) 我不太清楚最后一步所需的确切语法,因为我没有在 office 中安装自动化,但你需要按照以下几行做一些事情:

' OutlookTest should be changed to the name of the project ThisAddIn is in
Dim addIn As Office.COMAddIn = Globals.ThisAddIn.Application.COMAddIns.Item("OutlookTest")
Dim utilities As OutlookTest.IAddInUtilities = TryCast( _
addIn.Object, OutlookTest.IAddInUtilities)
utilities.Testing123()

关于vb.net - 在另一个类中调用过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com