CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

如何通过一个字符串=窗体名找到窗体?

楼主CoolCHEN(☆晓风☆)2004-08-02 23:46:34 在 VB / 基础类 提问

大概意思是这样的:  
  Dim   a   As   String  
  a   =   "form2"  
  这两句不能变  
   
  想通过a这个变量来实现form2.show的效果 问题点数:50、回复次数:13Top

1 楼cdbqss1(胖胖)回复于 2004-08-02 23:56:19 得分 0

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈  
  我也刚好想问这个问题。其实这个功能在vfp中通过宏替换   &   来实现的,可是在vb中不行。  
  如:在vfp中,用以下语句  
          a   =   "form2"  
          do   form     &a  
    就可以打开form2这个表单(窗口)  
   
  但在vb中  
        Dim   a   As   String  
        a   =   "form2"  
        a.show  
    就要出错了。  
   
  Top

2 楼SafeF8(A++.NET)回复于 2004-08-03 00:18:24 得分 0

通过字符串好像不行的.  
  这样吧  
  Dim   a   As   Form  
  Private   Sub   Form_Load()  
      Set   a   =   Form2  
      a.Show  
  End   SubTop

3 楼northwolves(狼行天下)回复于 2004-08-03 00:27:25 得分 40

Private   Sub   Command1_Click()  
  Dim   a   As   String  
  a   =   "form2"  
  Dim   myForm   As   Form  
          Set   myForm   =   Forms.Add(a)  
          myForm.Show  
  End   Sub  
  Top

4 楼talent303(风筝)回复于 2004-08-03 00:32:33 得分 0

没有不能用字符串来表示窗体,,,,,  
   
  只能定义一个窗体类型变量  
  Dim   a   As   Form  
  Private   Sub   Form_Load()  
      Set   a   =   Form2  
      a.Show  
  End   SubTop

5 楼cdbqss1(胖胖)回复于 2004-08-03 02:06:54 得分 0

TO:     SafeF8(^_^)   和   talent303(风筝)    
        问题在于Set   a   =   Form2   一句。  
  既然我用a="Form2"来表示,那么表明:  
      一:字符变量a   可以表示Form2,也可以表示Form1、Form4...等等;  
      二:在给变量a   赋值之前,并不能确定代表哪一个窗体;  
  所以怎么处理   Set   a   =   ...呢?Top

6 楼cdbqss1(胖胖)回复于 2004-08-03 02:15:46 得分 0

TO:     northwolves(狼行天下)  
        你提供的代码已经测试通过,但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量   a   所代表的窗体是否存在?Top

7 楼starsoulxp(星魂)回复于 2004-08-03 09:19:26 得分 0

//你提供的代码已经测试通过,但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量   a   所代表的窗体是否存在?  
   
   
   
  ---------------------  
   
  不存在就不要用set啊Top

8 楼LGYAN(紫衣随想)回复于 2004-08-03 09:32:59 得分 0

Dim   a   As   String  
  a   =   "form2"  
   
  Dim   retfrm   As   Form  
  Dim   frm   As   Form  
  For   Each   frm   In   Forms  
          If   frm.Name   =   a   Then  
                  Set   retfrm   =   frm  
                  Exit   For  
          End   If  
  Next  
  If   Not   (retfrm   Is   Nothing)   Then   retfrm.ShowTop

9 楼rainstormmaster(暴风雨 v2.0)回复于 2004-08-03 09:41:41 得分 10

这样就可以了:  
   
  Dim   a   As   String  
  a   =   "form2"  
  dim   frm   as   form  
  set   frm=forms.add(a)  
  frm.showTop

10 楼rainstormmaster(暴风雨 v2.0)回复于 2004-08-03 09:45:51 得分 0

//但小弟还有个问题是,如果form2在工程中不存在,怎么办?是不是只能通过检测错误号来判断字符变量   a   所代表的窗体是否存在?  
   
  是的,只能进行错误处理。  
   
  上面LGYAN(紫衣随想)的代码只能处理已经加载的窗体,换而言之,假如有form2这个窗体,但是它没有加载,它是不在forms集合中的Top

11 楼ljc_zy(彷徨)回复于 2004-08-03 10:12:11 得分 0

向rainstormmaster(暴风雨   v2.0)学习  
  综合一下吧,  
  function   CallForm(byval   FormName   as   string)  
    On   error   goto   ErrHandle  
      dim   Frm   as   form  
      set   frm=forms.add(formname)  
      frm.show  
      exit   function  
   
  ErrHandle:  
      if   err.number=404   then  
                debug.print   "无该对象  
                err.clear  
      end   if  
  end   function  
   
  或者用CallByName  
    Dim   frm   As   Form  
          Set   frm   =   CallByName(Forms,   "add",   VbMethod,   FormName)  
          frm.ShowTop

12 楼CoolCHEN(☆晓风☆)回复于 2004-08-03 10:18:11 得分 0

星多的达人就是厉害,forms.add解决问题。  
  -----------------  
  forms是已加载窗体的集合Top

13 楼cdbqss1(胖胖)回复于 2004-08-03 16:55:46 得分 0

就是://星多的达人就是厉害。  
         
  我啥时候才升为五星上将哟Top

相关问题

  • 用字符串变量代替窗体的名称,怎么样显示?
  • 知道窗体名字(字符串),如何根据名字(字符创)用FindComponent来创建窗体呢?
  • 字符串与窗体问题???
  • 字符串如何转化为窗体
  • 如何根据字符串值找到同名数组
  • 如何使字符串与相应的窗体联系?
  • 如何通过字符串来调用窗体?
  • 如何获得另一个窗体的textBox中的字符串?
  • 我想遍历窗体所有控件,包括菜单,以便提取/赋值所有控件名称字符串
  • 如何调用Ado的创建连接字符串的Build窗体?

关键词

  • 字符
  • 代码
  • 检测
  • 窗体
  • 哈哈哈哈哈哈
  • frm
  • 字符串
  • retfrm
  • stringa
  • 变量

得分解答快速导航

  • 帖主:CoolCHEN
  • northwolves
  • rainstormmaster

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo