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#代码里直接调用了

<!-- lang: 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());
    }

转载于:https://my.oschina.net/HenuToater/blog/139268

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值