C#调用VB的窗体实现

在做一个VB软件升级的项目,要求将其中一部分功能替换为C#,并且保存目前还在使用的VB旧功能,这样就需要在C#代码里调用VB窗体,并处理它返回的结果。对VB一窍不通,都不知道怎么入手,还是把之前C#里面的老套路加进去,通过传递参数向窗体传值,使用事件的处理窗体返回的结果。折腾了老久总算是理解,搞明白怎么调用了。顺手贴进去,以备忘掉。

<!-- lang: vb -->

Public Class VBFormCall

'定义事件
Public Event CompletedEvent(ByVal value As Object)
'调用指定的窗体
Public Function CreateEvent(ByVal naemFrm As String, ByVal frmParam As System.Object)
    On Error Resume Next
    '可以正常接受并处理传递来的参数
    Dim myValue = frmParam
    Dim objFrm = New VBasicForm.Form1
    objFrm.TextDisplay(myValue)
    objFrm.ShowDialog()
    '激活事件
    RaiseEvent CompletedEvent(objFrm.strReturnVal)
End Function

End Class

项目组成的结构可能是这样的

在此输入图片描述

然后就可以在C#代码里直接调用了


     private void button2_Click(object sender, EventArgs e)
    {

        FrmCallerLib.VBFormCall caller = new FrmCallerLib.VBFormCall();
        // 传递委托处理返回的值
        caller.CompletedEvent += new FrmCallerLib.VBFormCall.CompletedEventEventHandler(caller_CompletedEvent);
        caller.CreateEvent(null,"最爱李笑阁");
    }
    /// <summary>
    /// 返回的处理事件
    /// </summary>
    /// <param name="value"></param>
    public void caller_CompletedEvent(object value)
    {
        if (value != null)
            MessageBox.Show(value.ToString());
    }

你可能感兴趣的:(.net,C#,vb)