各位好:我用VB做的组件在VB.net 里可以用但是在C#里就不行了,不知道怎么调用。在VB组件里是这样的用返回数组的,
Public Function GSFY(ByVal x As String, ByVal y As String)Dim arry(12, 4)
……………………
……………………
……………………
……………………
GSFY = arryEnd Function这样写在VB.net 里可以用。在C#里怎么调用啊?谢谢!

解决方案 »

  1.   

    Class1 acx=new Class1Class();
    TextBox1.Text=acx.GSFY("21","2007")(0,0);我这样调用系统提示acx.GSFY("21","2007")错误(应输入方法名称)Class1 acx=new Class1Class();
    TextBox1.Text=acx.GSFY("21","2007")我这样调用系统提示acx.GSFY(无法将类型“object”隐式转换为“string”)
    可返回值是数组啊,我要用第一种才行吧。前面的引用啊什么的做了:
    [DllImport("BudgetALL.dll")]
    public static extern string GSFY(string x,string y); 还有什么要做的或改的?谢谢!
      

  2.   

    vb组件,不能通过dllimport,你需要通过regsvr32来注册这个组件(可能还需要先安装vb的运行库)。
      

  3.   

    如果注册了,你直接添加com的方法来引入。
      

  4.   

    添加com的方法来引入这步也做了。
    Class1 acx=new Class1Class();  --- 这样定义系统都能自动出现我在组件里的类了,
    TextBox1.Text=acx.GSFY("21","2007") --- 这里也会自动出现acx.GSFY()组件定义的函数的参数,只是没有后面的数组的参数。 Class1 acx=new Class1Class();
    TextBox1.Text=acx.GSFY("21","2007")(0,0);我这样调用系统提示acx.GSFY("21","2007")错误(应输入方法名称)Class1 acx=new Class1Class();
    TextBox1.Text=acx.GSFY("21","2007")我这样调用系统提示acx.GSFY(无法将类型“object”隐式转换为“string”)
    可返回值是数组啊,我要用第一种才行吧。这可能是组件的返回值问题,如果不是数组就好做了。现在还不能确定是组件返回值问题还是C#调用问题,但是那个组件在VB.net 里可以调用/
      

  5.   

    试试这样写:Class1 acx=new Class1Class();
    object obj = acx.GSFY("21", "2007");
    object[,] arr = (object[,])obj;
    TextBox1.Text=arr[0,0];