首页 > 开发 > 综合 > 正文

多个窗体之间如何互相调用

2024-07-21 02:29:55
字体:
来源:转载
供稿:网友

    在vb6中,多个窗体之间可以很方便地互相调用,如:在form1中,只需要用一条“form2.show” 语句就能显示窗体form2。然而在vb.net中窗体处理机制发生了很大的变化:在访问窗体之前,你必须进行窗体实例化;如果在项目中有多处代码访问同一窗体,则你必须把它的同一实例指针传递给这些代码,否则新创建的窗体实例就不再是原先的窗体了。

    下面的代码实现窗体form1和form2之间互相调用,form1为主窗体。form1上的按钮btnshowfrm2的标题为“显示form2”,form2上的按钮btnshowfrm1的标题为“显示form1”。

    1、form1中的代码:

public class form1
 inherits system.<a href="http://dev.21tx.com/os/windows/" target="_blank">windows</a>.forms.form
 '创建form2的一个新的实例
 dim frm2 as new form2()

 public function instance2(byval frm as form2)
  frm2 = frm
 end function

 private sub btnshowfrm2_click(byval sender as system.object, byval e as system.eventargs) _
  handles btnshowfrm2.click
  '以下语句保证在form2以及其他窗体中访问form1时,
  '都将得到form1的同一个窗体实例。
  frm2.instance(me)
  frm2.show()
  me.hide()
 end sub

end class

    2、form2中的代码:

public class form2
 inherits system.windows.forms.form
 dim frm1 as form1
 '借助一个新增的instance属性来生成窗体frm1的实例
 public function instance(byval frm as form1)
  frm1 = frm
 end function

 private sub btnshowfrm1_click(byval sender as system.object, byval e as system.eventargs) _
  handles btnshowfrm1.click
  me.hide()
  frm1.show()
 end sub

 private sub form2_closed(byval sender as object, byval e as system.eventargs) handles mybase.closed
  '如果form2被关闭,则设置form1的按钮btnshowfrm2不可用。
  frm1.btnshowfrm2.enabled = false
  frm1.show()
 end sub
end class

中国最大的web开发资源网站及技术社区,
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表