欢迎光临
我们一直在努力

使用CallByName“代替”模式窗口-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

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


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

  大致过程就是这样,虽然有点麻烦,不过总算也是一种解决方法。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 使用CallByName“代替”模式窗口-.NET教程,Asp.Net开发
分享到: 更多 (0)