vb.net关闭模态窗体

时间:2022-05-28 23:45:57
请问:在一个窗体中怎么关闭另一个窗体
我的代码:
在Form1(启动窗体)中点击按钮 Form6.ShowDialog(),显示Form6窗体
然后在Form6窗体中点击按钮 Form7.ShowDialog(),显示Form7窗体
然后在Form7窗体中点击按钮 Form6.close(),关闭Form6窗体,但是关闭不了Form6窗体,
怎么做呢

16 个解决方案

#1


form7跟form6是什么依赖关系?

#2


Form6,Form7 都是模态窗体

#3


form7跟form6是什么依赖关系?
没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close

#4


引用 1 楼 sp1234 的回复:
form7跟form6是什么依赖关系?

没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close
我的目的是Form6是模态窗体,Form7也是模态窗体,点击Form6按钮显示Form7的同时关闭Form6

#5


能同时显示2个模态窗体?

#6


引用 5 楼 zj_zwl 的回复:
能同时显示2个模态窗体?

不是同时显示,form7以模态窗体显示后成为活动窗体,form6应该就不是了,然后我想把form6关闭

#7


引用 楼主 haiyu0612 的回复:
请问:在一个窗体中怎么关闭另一个窗体
我的代码:
在Form1(启动窗体)中点击按钮 Form6.ShowDialog(),显示Form6窗体
然后在Form6窗体中点击按钮 Form7.ShowDialog(),显示Form7窗体
然后在Form7窗体中点击按钮 Form6.close(),关闭Form6窗体,但是关闭不了Form6窗体,
怎么做呢


两个都是模式化窗体 是无法实现你这样的效果的 ,如果要实现的你的效果,很简单,把Form7.ShowDialog() 改成f7.Show()就可以了

#8


模态窗体就是很难关闭,有时候方法灵有时候不灵,不知道为什么

#9


Form7.ShowDialog() 
  Me.Hide()
  Me.Close()

#10


如果要在Form7中关闭Form6,可申明一个全局变量Public Frm6 As Form;
启动Form6:
Frm6=New Form6
Frm6..ShowDialog() 
Form7中的关闭方法:
Frm6.Hide()
Frm6.Close()

#11


在form6的关闭事件中注册关闭form7的方法应该就可以了

#12


有时关闭Form6,但不一定要执行Form7的程序

#13


引用 3 楼 haiyu0612 的回复:
form7跟form6是什么依赖关系?
没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close


如果 form6  依赖 form6,那么 form6 就不要依赖 form7,否则这种纠结多了就使得系统的内耗成指数增长了。

先搞清楚依赖关系,然后按照依赖关系来设计。form7 应该采取“依赖倒置”原则来给宿主提供一个“点了关闭按钮”的事件通知,而它并不需要依赖任何宿主窗口。

#14


如果 form6 依赖 form6,那么 form6 就不要依赖 form7  -->  如果 form6 依赖 form7,那么 form7 就不要依赖 form6

事件是很基本的设计模式。你随便用一个现成的控件,都大量用到事件概念。不懂事件编程设计,基本上就等于有一半的编程知识没有学过。不懂事件,那么就会看上去“只知道一个大循环”去玩图控制什么东西,而不知道依赖是需要倒置的。

#15


那当然不行了,你把有依存关系的上级窗口关掉那后面的代码还怎么执行

#16


form6 呼叫 form7 后 ,form6的线程 就应该会阻塞住。

form7的窗口未关闭时,form6的窗口不响应任何事件,包括close()

如果在非要做这种设计的时候,就不要用模态窗口了,可以用TOPMOST属性来达到目的。

#1


form7跟form6是什么依赖关系?

#2


Form6,Form7 都是模态窗体

#3


form7跟form6是什么依赖关系?
没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close

#4


引用 1 楼 sp1234 的回复:
form7跟form6是什么依赖关系?

没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close
我的目的是Form6是模态窗体,Form7也是模态窗体,点击Form6按钮显示Form7的同时关闭Form6

#5


能同时显示2个模态窗体?

#6


引用 5 楼 zj_zwl 的回复:
能同时显示2个模态窗体?

不是同时显示,form7以模态窗体显示后成为活动窗体,form6应该就不是了,然后我想把form6关闭

#7


引用 楼主 haiyu0612 的回复:
请问:在一个窗体中怎么关闭另一个窗体
我的代码:
在Form1(启动窗体)中点击按钮 Form6.ShowDialog(),显示Form6窗体
然后在Form6窗体中点击按钮 Form7.ShowDialog(),显示Form7窗体
然后在Form7窗体中点击按钮 Form6.close(),关闭Form6窗体,但是关闭不了Form6窗体,
怎么做呢


两个都是模式化窗体 是无法实现你这样的效果的 ,如果要实现的你的效果,很简单,把Form7.ShowDialog() 改成f7.Show()就可以了

#8


模态窗体就是很难关闭,有时候方法灵有时候不灵,不知道为什么

#9


Form7.ShowDialog() 
  Me.Hide()
  Me.Close()

#10


如果要在Form7中关闭Form6,可申明一个全局变量Public Frm6 As Form;
启动Form6:
Frm6=New Form6
Frm6..ShowDialog() 
Form7中的关闭方法:
Frm6.Hide()
Frm6.Close()

#11


在form6的关闭事件中注册关闭form7的方法应该就可以了

#12


有时关闭Form6,但不一定要执行Form7的程序

#13


引用 3 楼 haiyu0612 的回复:
form7跟form6是什么依赖关系?
没有依赖关系,就是在form6有一个按钮点击按钮 Form7.ShowDialog()
form7有一个按钮点击按钮 Form6.close


如果 form6  依赖 form6,那么 form6 就不要依赖 form7,否则这种纠结多了就使得系统的内耗成指数增长了。

先搞清楚依赖关系,然后按照依赖关系来设计。form7 应该采取“依赖倒置”原则来给宿主提供一个“点了关闭按钮”的事件通知,而它并不需要依赖任何宿主窗口。

#14


如果 form6 依赖 form6,那么 form6 就不要依赖 form7  -->  如果 form6 依赖 form7,那么 form7 就不要依赖 form6

事件是很基本的设计模式。你随便用一个现成的控件,都大量用到事件概念。不懂事件编程设计,基本上就等于有一半的编程知识没有学过。不懂事件,那么就会看上去“只知道一个大循环”去玩图控制什么东西,而不知道依赖是需要倒置的。

#15


那当然不行了,你把有依存关系的上级窗口关掉那后面的代码还怎么执行

#16


form6 呼叫 form7 后 ,form6的线程 就应该会阻塞住。

form7的窗口未关闭时,form6的窗口不响应任何事件,包括close()

如果在非要做这种设计的时候,就不要用模态窗口了,可以用TOPMOST属性来达到目的。