1

我有以下代码模式:

[VB6] 
Dim objNetDllObject As New NetDllObject 
objNetDllObject.PassVb6Form(MyForm) 
objNetDllObject.ShowForm  

[C#] 
object Vb6Form;  
private void PassVb6Form(object form) { Vb6Form = form; } 
private void button1_Click(object sender, EventArgs e) { Vb6Form.Show(); }

问题是 C# 编译器不喜欢该Vb6Form.Show()语句,因为Show()它不是 的函数object,这是真的。如何编译此代码?

4

1 回答 1

1

我会这样解决问题(因为 VB6 有对 NetDllObject 的引用,我猜它有一个引用并且也可以实现其他对象)

在 .Net 中公开一个您希望 VB6 接口实现的接口:

public interface IVB6Form
{
     void Show();
}

在 VB6 中的一个新类中实现它:

Implements IVB6Form

Public myForm as Form

Public Sub IVB6Form_Show()
    myForm.Show()  
End Form

更改 C# 签名以使用它而不是对象引用:

private void PassVb6Form(IVB6Form form) { Vb6Form = form; }
于 2012-10-08T17:15:51.013 回答