我已经从我的WPF应用程序创建了一个DLL并将其导入到我的Access / VBA项目中。
我使用这些命令在我的DLL上创建一个对象实例并打开一个包含它的新窗口:
Dim tst As New DllName.ClassName
tst.ShowDialog
这是正常的:我的窗口已创建并正确显示。我的下一个目标是从创建的窗口打开VBA窗口。
我会更具体:我的WPF-DLL上有一个Button,我想打开一个Access Form。
问题是:这可能吗?
谢谢!
答案 0 :(得分:0)
通过这种方式自行解决:
我的内部按钮(WPF)的c#类包含:
代表声明:
public delegate void MyEventHandler();
活动界面:
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("***your-guid***")]
public interface _DllAppEvents
{
[DispId(1)]
void MyEvent();
}
我的窗口类不能实现界面并包含我的按钮:
[ComSourceInterfaces(typeof(_DllAppEvents))]
[ClassInterface(ClassInterfaceType.None)]
[Guid("C7FA28F7-7A8D-45BA-9F0B-2C6CD8FB8650")]
[ProgId("TestDll.Test")]
public partial class DllApp : Window
{
// my event
public event MyEventHandler MyEvent;
// button event
void Button_Click_1(object sender, RoutedEventArgs e)
{
// call the event
MyEvent();
}
}
(注意:我使用了命名空间DllApp)
我导入tlb的VBA代码包含:
必须支持事件的全局变量:
Public WithEvents X As DllApp.DllApp
我使用访问表单上的按钮创建WPF窗口:
Private Sub New_Click()
Dim A As Object
Set A = New DllApp.DllApp
Set X = A
End Sub
我发现添加此方法的事件:
Private Sub X_MyEvent()
MsgBox "button is clicked!"
End Sub
方法的名称必须是变量名+ + +事件名(在本例中为X + _ + MyEvent())。
希望这可以提供帮助。
(我想知道为什么我的问题被低估了...... bah)