vb.net窗体切换问题

◉蚂蚁 2011-10-20 04:46:49
vb.net设计的mobile程序在窗体切换时出现以下问题:
我有两个窗体,form1,form2,form1为主窗体
我用以下方法进行切换
点击form1中的Button切换至form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Hide() '隐藏form1窗体
Form2.Show() '显示form2窗体
End Sub

点击form2中的Button切换至form1
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.close() 'form2窗体
form1.Show()'显示form2窗体
End Sub


先点击从form1切换至form2没什么问题可以正常显示form2,再点击关闭form2显示form1也没什么问题,但是再次点击想显示form2时则显示不出来

这是什么问题啊?
关闭了form2窗体就不能再打开了么?
...全文
451 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
积善成魔 2011-10-24
  • 打赏
  • 举报
回复
Private Shared WithEvents SharedForm As Form
Private Shared IsForm1 As Boolean
Public Shared Sub main()
SharedForm = New Form1
SharedForm.Show()
IsForm1 = True
Application.Run(SharedForm)
End Sub

Private Shared Sub NewThreadForm()
IsForm1 = Not IsForm1
Dim i As New Threading.Thread(AddressOf NewForm)
i.Start()
End Sub
Private Shared Sub NewForm()
If IsForm1 Then
SharedForm = New Form1
Else
SharedForm = New Form2
End If
SharedForm.Show()
Application.Run(SharedForm)
End Sub

Private Shared Sub SharedForm_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles SharedForm.FormClosed
NewThreadForm()
End Sub
◉蚂蚁 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 haoting987 的回复:]
Private Shared SharedForm As Form

Public Shared Sub main()
SharedForm = New Form1
SharedForm.Show()
Application.Run()
End Sub

Private Sub Form1_FormClosed(ByVal sender As Object,……
[/Quote]

错误 1 没有为“Public Shared Sub Run(fm As System.Windows.Forms.Form)”的参数“fm”指定参数。
◉蚂蚁 2011-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 haoting987 的回复:]
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Hide() 'form2窗体
form1.Show()'显示form2窗体
End Sub

close 表示窗口被销毁了。

如果一定要销毁就 改成……
[/Quote]

因为在form2_load()中有代码运行,所以如果Hide的话不再运行form2_load()
用下面的方法form2显示不出来
苦苦的潜行者 2011-10-21
  • 打赏
  • 举报
回复
学习...
紫乐盗 2011-10-21
  • 打赏
  • 举报
回复

Me.close() 'form2窗体
form1.Show()'显示form1窗体

在這裡Forn2窗體已關閉了,此時你再次點擊Button1

Me.Hide() '隐藏form1窗体
Form2.Show() '显示form2窗体

並沒有再New一個窗體form2出來。所以它當然顯示不出來了。
两种方案,一种就是不要关闭Form2,一种就是new一个新的Form2出来
积善成魔 2011-10-21
  • 打赏
  • 举报
回复
Private Shared SharedForm As Form

Public Shared Sub main()
SharedForm = New Form1
SharedForm.Show()
Application.Run()
End Sub

Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
SharedForm = New Form1
SharedForm.Show()
End Sub

在项目属性里把 应用程序框架的勾去掉

然后启动项设置为 sub main
◉蚂蚁 2011-10-21
  • 打赏
  • 举报
回复
有没高手指点指点哦!
StarNight_Miracle 2011-10-21
  • 打赏
  • 举报
回复
请教下为什么dispose了一个窗体后可再show出来,而close不行?dispose不是释放的更彻底吗?
  • 打赏
  • 举报
回复
两种方案,一种就是不要关闭Form2,一种就是new一个新的Form2出来
颓废的无房户 2011-10-20
  • 打赏
  • 举报
回复
像一楼说的隐藏了就可以
积善成魔 2011-10-20
  • 打赏
  • 举报
回复
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.Hide() 'form2窗体
form1.Show()'显示form2窗体
End Sub

close 表示窗口被销毁了。

如果一定要销毁就 改成

Private n1 as new form1
Private n2 as new form2
'----------
sub a
n2.close
n1= new form1
n1.show
end sub

sub b
n1.close
n2= new form2
n2.show
end sub
'----------------------
.net里面FORM销毁后要重新建立一个新对象。跟VB6有些不一样。
bdmh 2011-10-20
  • 打赏
  • 举报
回复
Me.close,改成Me.Hide()

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧