在vb开发一个ocx时需要加载另一个控件,还需加载一个窗体,现在需要在窗体中调用ocx所调用的ocx的方法。不知道什么实现。
如果把要加载的控件在放在另一个窗体中的,该控件的方法是可以通过窗体调用了,但是该控件的事件就无法封装出来了。
请有经验的给予帮助,谢谢。

解决方案 »

  1.   

    http://topic.csdn.net/u/20090813/07/fbbcdb35-394d-475d-b11c-a4cbf41871c8.html?7132
      

  2.   

    控件A调用控件B的方法,控件A里这样写
    Public Function sReady() As String
        '返回值:1,成功;0,失败
        on error goto a0
         call 控件B.isready
        sReady = 1
        exit Function
    a0: sReady = 0
    End Function
      

  3.   

    可能我表达的不是很清楚。
    是这样的
    我现在一个ocx控件,在这个控件中设计的时候调用了一个窗体,现在在窗体中怎么调用用户控件中的方法。
    窗体的事件又怎么通知用户控件。
      

  4.   

    我现在一个ocx控件,在这个控件中设计的时候调用了一个窗体.
    你说的窗体在不在ocx里?
      

  5.   

    如用户控件有sReady方法,这个方法必须是public
    Public sub sReady() 
    ....
    end sub控件的form中调用用户控件的sReady方法:
    call UserControl1.sReady
      

  6.   

    (孤独剑)谢谢你, 你指的是窗体外部调用吧。我这个是ocx内部的窗体,控件调用窗体可以通过窗体名调用,但是窗体要想调用控件方法时,不知道调用,还有控件想知道窗体的事件也不知道怎么处理。
      

  7.   

    我举个例个吧 
        
      (建一个用户控件,里面有如下的测试代码:   
        
      Public   Event   MyEvent()   
        
      Public   Sub   Mysub()   
           msgbox "控件方法调用"
      End   Sub     
       
      在控件工程里新建一个窗体,命名为frmtest,里面有如下的代码:   
      Private   Sub   Form_Load()   
          call UserControl.Mysub  '调用不成功
      End   Sub   
        
      Private   Sub   Form_Unload(Cancel   As   Integer)   
          '把事件返回给MyEvent,怎么实现。
      End   Sub   
       
    请指点,最好能附代码,谢谢。
      

  8.   

    看着你的描述,是越来越晕了............................我给你简化一下,看是不是这意思.一,工程是一个OCX.二,除了必有的一个UserControl外,你还添加了一个窗体.三,窗体需要与UserControl交互.如果是这样,我猜你那窗体是用作参数设置之类的吧?可以在窗体里面声明一个公有对象,再在初始化窗体时把控件的实例传入:'以下代码在Form1中
    public objControl as object'以下代码在UserControl中dim withevents objFrm as Form1   '以事件方式声明一个窗体类型的对象'在显示窗体之前,先将自己的实例传进去set objfrm=new form1set objfrm.objcontrol=meobjfrm.show vbmodal这样,窗体就可以通过操作objControl来操作当前控件的一个实例了.而窗体里声明的事件也可以在控件中接收.你要把窗体也看成一个"类",只不过这个"类"是有界面的而已.
      

  9.   

    myjian你好!你这个能写一个完整能用的吗?
    我测试了好像不行啊我的意思:
    一,工程是一个OCX. 二,除了必有的一个UserControl外,你还添加了一个窗体. 三,窗体需要与UserControl交互. 窗体需调用UserControl的方法,UserControl需能够获取窗体中的事件。
      

  10.   

    就和这个网站差不多http://topic.csdn.net/t/20050327/07/3884592.html,其中说明了,窗体不能调用UserControl的方法,也不能把事件返回通过定时器来实现的,有什么好办法吗。
      

  11.   

    你不能在form_load 这样调用控件,控件要在form_load 事件完成后才能抛出Event。