我有以下代码模式:
[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
的函数,这是真的。我该如何编译这段代码?
答案 0 :(得分: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; }