以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]合并两段代码出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=113702)

--  作者:天一生水
--  发布时间:2018/1/21 13:51:00
--  [求助]合并两段代码出错

在主窗口中显示子窗口时,关闭当前子窗口,再加载新的子窗口,提示出错。

这两个过程设置两个按钮单独运行没有问题,但是合并为一个按钮时提示不能调用容器控件panel。

两段代码如下,请老师指教:

 

’1、关闭当前窗口,返回主窗口
For Each frm As WinForm.Form In Forms
        If frm.Name <> "导航窗口" Then
        frm.Close
    End If
Next
Forms("导航窗口").show()
e.Form.Controls("Panel5").basecontrol.visible = True
e.Form.Controls("Panel5").basecontrol.BringToFront \'置前
Forms("导航窗口").Controls("SplitContainer2").Panel1Collapsed = True  \'隐藏导航栏

 

’2、打开新窗口
Dim PB As WinForm.Panel = e.Form.Controls("Panel4")
Dim Name As String = "批量录入"
Forms(Name).OPEN(-1000,-1500)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill   \'子窗口充满父窗口
\'PB.BaseControl.Controls.Clear
PB.BaseControl.Controls("panel5").visible = False
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
\'Forms(Name).BaseForm.left = (pb.width-Forms(Name).BaseForm.width) / 2    \'子窗口居中显示
\'Forms(Name).BaseForm.top = (pb.height-Forms(Name).BaseForm.height) / 2
pb.Select    \'点击闪退加
Forms("批量录入").open()


--  作者:有点甜
--  发布时间:2018/1/21 22:18:00
--  
上传一个实例具体测试。
--  作者:天一生水
--  发布时间:2018/1/22 10:29:00
--  

点击导航栏按钮进入窗口1,再点击窗口1中的“问题按钮”,会提示出错。

目的是在主窗口退出“窗口1”,加载“窗口2”。

 谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:主窗口还原.table


--  作者:有点甜
--  发布时间:2018/1/22 10:54:00
--  

不能用 e.form,要改成 Forms("主窗口")

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:主窗口还原.table


--  作者:天一生水
--  发布时间:2018/1/30 22:26:00
--  

老师回复的例子没有问题,我用到项目中,加载的“窗口2”内的控件都被锁死了,不能操作,会是哪里的问题。

单独打开“窗口2”没有问题。

代码:

For Each frm As WinForm.Form In Forms
        If frm.Name <> "主窗口" Then
        frm.Close
    End If
Next
Forms("主窗口").show()
Forms("主窗口").Controls("Panel5").basecontrol.visible = True
Forms("主窗口").Controls("Panel5").basecontrol.BringToFront \'置前
Ctype(ApplicationMenu.LeftItems("Save"), RibbonMenu.Button).PerformClick()   \'保存项目
\'-----------------------------
Forms("主窗口").Controls("SplitContainer2").Panel1Collapsed = True  \'隐藏导航栏

Dim PB As WinForm.Panel = Forms("主窗口").Controls("Panel4")
Dim Name As String = "窗口2"
Forms(Name).OPEN(-1000,-1500)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
\'PB.BaseControl.Controls.Clear
PB.BaseControl.Controls("panel5").visible = False
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
pb.Select


--  作者:有点蓝
--  发布时间:2018/1/30 22:55:00
--  
代码看不出什么问题,上传有问题的项目测试
--  作者:天一生水
--  发布时间:2018/1/30 23:20:00
--  

加载的“窗口2”    afterload事件,加上这几句无边框移动的代码后行了:

 

AddHandler e.Form.Panel.MouseDown,AddressOf Panel_MouseDown   \'无边框移动
e.form.BaseForm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
e.Form.BaseForm.ShowInTaskbar = True