编辑 -我发现当VB6程序运行编译时,事件正常工作,没有问题。
只有当代码在VB6 IDE中运行时,事件才会中断!
这不能完全解决问题,因为如果我们不能在IDE中进行调试,那将是非常低效的开发。但是也许它可以提供更多的根本原因的见解。我猜想,如果可能的话,需要进行的修复是使事件在IDE中正常/正确地工作。
我正在使用两个环境之间的COM互操作从模态C#Winform加载模态VB6表单。在这种配置(模态到模态)下,不会以VB6格式触发任何事件,例如。甚至没有Form_Load。
如果表单是非模式加载的,那么事情就可以正常工作,但是当然这不能很好地满足UI要求。
我想了解这个问题的根本原因,以及如果可以采取任何措施,该怎么办。我在这里包括了我可以想到的问题的最基本的再现。
该体系结构是将协调对象从VB6传递到C#代码,该代码充当包装器以显示VB6形式。
事件顺序:
ModalCSForm对象并将其对VB6Bridge对象的引用设置为ModalCSFormModalCSForm 显示ModalCSFormVB6Bridge对象显示ModalVB6FormModalVB6Form 显示C#项目:
班级/形式ModalCSForm:
[ClassInterface(ClassInterfaceType.AutoDual)]
public partial class ModalCSForm : Form
{
...
public IVB6Bridge Bridge { get; set; }
private void button1_Click(object sender, EventArgs e) =>
Bridge.ShowVB6FormModally();
}
Run Code Online (Sandbox Code Playgroud)
界面IVB6Bridge:
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IVB6Bridge
{
void ShowVB6FormModally();
}
Run Code Online (Sandbox Code Playgroud)
VB6项目:
主程序:
Sub main()
Dim m As …Run Code Online (Sandbox Code Playgroud)