新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > .Net开发 > Asp.net教程 > 正文:使用CallByName“代替”模式窗口

使用CallByName“代替”模式窗口

新客网 XKER.COM 2005-05-13 来源: 收藏本文

  模式窗口有时候用起来确实很方便,比如说增加一条资料的时候,弹出一个模式窗口,增加完成后继续执行下面的代码,有时候用来取得新增加的值,如:

...
frmClient.Show vbModal
If 增加成功 then
取得新值
End If
...

但是如果使用MDI窗口的话,就麻烦了,因为MDI子窗体不允许以模式窗口显示,所以用上面的方法就行不通了。

  于是我使用CallByName加一个全局的变量来实现以上功能。

Private Type SelectInfos
   blnAddNewReturn                  As Boolean                    ' 是否增加完后返回信息
   frmSource                        As Form                       ' 源调用窗口
   strFunctionName                  As String                     ' 当返回参数时要执行的函数/过程名称
End Type

Public guSelectInfos                As SelectInfos                ' 信息选择时用到

frmInfos

'// 注意一定要用Public的,否则在其他窗口里无法调用。
Public Sub LoadClientInfos(ByVal lngId as Long)
  '加载客户信息
End Sub

Private Sub AddNew()
...
         With guSelectInfos
            .blnAddNewReturn = True
            '// 设置源窗口
            Set .frmSource = Me
            '// 设置要调用的函数名称
            .strFunctionName = "LoadClientInfos"
            frmClient.Show
         End With
...
End Sub

frmClient

Private Function UpdateClient()
...
   '***************************************
   '** 判断是否为其他窗口调用时的新增,如果是则需要返回当前编号
   '***************************************
   With guSelectInfos
      If .blnAddNewReturn Then
         '// 调用源窗口内的函数返回值
         Call CallByName(.frmSource, .strFunctionName, VbMethod, lngID)
         .blnAddNewReturn = False
      End If
   End With
   '***************************************
...
End Function

  大致过程就是这样,虽然有点麻烦,不过总算也是一种解决方法。
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐