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への参照があるので、参照があり、他のオブジェクトも実装できると思います)

VB6インターフェイスに実装させたいインターフェイスを.Netで公開します。

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 に答える