问题描述如下:
假设我有若干按钮,按钮中的tag保存的是各种窗体的名字
我希望点任何一个按钮,都能调用到这个tag的变量的值.show,就打开对应窗体。
希望高手指点。
已经用过以下方法:
1:
  Dim obj As Object
For Each obj In Forms
    If OBJ.Name = TreeView1.Nodes.Item(TreeView1.SelectedItem.index).Key Then        OBJ.Show
        Exit For
    End IfNext
上面这个方法,好像forms里只包含了已经打开的窗体,而不是所有的,是不是有个什么集合是包含了没有打开或者是所有的窗体的。2. 
Dim OBJ As Object
Dim AA As Form
OBJ.Name=TreeView1.Nodes.Item(TreeView1.SelectedItem.index).Key
Set AA=OBJ
AA.Show这个是因为实在是想不出办法了,试了下,还是不行求各位指点
感激不尽

解决方案 »

  1.   

    '2个窗体Form1,Form2
    Option ExplicitPrivate Sub Command1_Click()
        Dim obj As Form
        For Each obj In Forms
           If InStr(1, LCase(obj.Name), LCase(Command1.Tag)) > 0 Then
              obj.Show
              Exit For
           End If
        Next
    End SubPrivate Sub Form_Load()
       Command1.Tag = "form2"
       Form2.Hide
    End Sub
      

  2.   


    此法有问题,Form是中的对象是已经加载的,对于未加载的Form就show不出来了,应该使用select进行分辨sub comman1_click(index,....)'应该使用command数组,你的这个设想才有意义
      select case command1(index).tag 
      case "Form1"
          Form1.show '此法不论一个按键点多少次,就show一个窗口,如果要show多个Form1,则使用 dim f as new form1  f.show
      case "Form2"
          Form2.show
      ........
      end select
    end sub
      

  3.   


    您好,感谢再次帮助,
    不过这次的问题不大这么好解决,
    因为这次实际上的变量,是TreeView的nods,所以,数量相当大,大概有好几十个,所以不能全部都加载。
      

  4.   


    您好,感谢帮助。
    目前正是用的select case 
    不过由于数量很大,而且以后可能存在增加,考虑到灵活性的问题,所以希望直接能:
    变量.show
    以简化方便化代码。
    非常感谢。
      

  5.   

    你这段代码才有问题,自己的逻辑都不对,前后矛盾。多个实例的情况下,Form2.Show显示的全局Form2。
      

  6.   

    看来只能选择case方式完成了,感谢每一个回复的人