我做了一个树目录控件,点击到某个节点时想灵活调用控件之外的一个函数,函数名不固定,该怎么实现啊

解决方案 »

  1.   

    没办法贴代码。我的程序里有一个利用treeview实现的自定义控件,主要功能是显示数据浏览的导航功能。现在我想在控件的某个叶结点上单击时,通过我的控件的事件处理代码,能够在控件外的文本框之类的东东里显示数据。这些文本框不是一个两个,这种显示数据的场合也不是只在一个form里,否则我也就不用控件了。不知道说没说清楚,呵呵呵
      

  2.   

    还是不大明白
    在 click 事件里写
    Select Case TreeView1.SelectedItem
     Case "1"
      '你的代码
     Case Else
      '你的代码
    End Select
    不可以么?
      

  3.   

    VB6很难实现.如果诸如.Net,Java提供的反射和泛型有可能实现.
      

  4.   

    呵呵呵,看来楼上的明白我的意思了Case "1"
      '你的代码
    里,代码都是活的sub或function,我怎么调用啊。死的代码怎么都能实现。
      

  5.   

    要是java,用接口就能实现了吧
      

  6.   

    哦明白了。
    1。引用Microsoft Script Control 
    2。
    Dim VBsc As New ScriptControl
     VBsc.Execute "你的语句"把execute写到你的case里,参数是string可以参考:Execute 语句
    执行一个或多个指定的语句。Execute statements所需要的 statements 参数是一个字符串表达式,其中包含一个或多个要执行的语句。  如果要在 statements 参数中包含多条语句,应使用分号或嵌入的分行将其分隔开。 说明
    在 VBScript 中,x = y 可以有两种解释。首先是作为赋值语句,将 y 的值赋予 x。其次是作为表达式,测试x 和 y 的值是否相等。如果相等,结果为 True;否则,结果为 False。Execute 语句总是使用第一种解释,而 Eval 方法总是使用第二种。注意  在 Microsoft(R) Visual Basic Scripting Edition 中并不存在赋值与比较之间的混淆,因为赋值运算符(=)与比较运算符(==)是不同的。调用 Execute 语句的上下文确定了要运行的代码可以使用的对象和变量。作用域内的对象和变量是 Execute 语句中运行的代码可以使用的。不过,必须明白的一点是,如果被执行的代码创建了过程,那么该过程将不会继承它所在的过程的作用域。与其他过程类似,新的过程的作用域是全局的,它继承了全局作用域的全部东西。与其他过程不同的是,它的上下文不是全局作用域,因此它只能在发生 Execute 语句的过程内的上下文中执行。不过,如果相同的 Execute 语句是在过程之外(例如在全局作用域)的作用域中被调用,那么它将不仅继承全局作用域中的所有东西,而且它还可以在任何地方被调用,因为它的上下文是全局的。下面的例子说明了这种特点:Dim X            ' 在全局作用域中声明 X。
    X = "Global"         ' 将全局的 X 赋值。
    Sub Proc1            ' 声明过程。
      Dim X            ' 在局部作用域中声明 X。
      X = "Local"         ' 对局部的 X 赋值。
                ' 此处的 Execute 语句建立了一个过程,
                ' 在调用该过程时它将打印 X。
                ' 它打印的将是全局 X,因为 Proc2
                ' 继承了全局作用域中的一切。
      Execute "Sub Proc2: Print X: End Sub"
      Print Eval("X")      ' 打印本地 X。
      Proc2            ' 在 Proc1 的作用域中调用 Proc2。
    End Sub
    Proc2            ' 本行将导致一个错误,因为
                ' Proc2 在 Proc1 之外是不可使用的。
    Proc1            ' 调用 Proc1。
      Execute "Sub Proc2: Print X: End Sub"
    Proc2            ' 这句话可以成功,因为 Proc2
                ' 现在是全局可用的。
    下面的例子显示了如何将 Execute 语句改写,免于将整个过程包含在引号内:S = "Sub Proc2" & vbCrLf
    S = S & "  Print X" & vbCrLf 
    S = S & "End Sub"
    Execute S