vb.net:使用表单上的按钮打开另一个表单,不起作用

时间:2014-07-02 02:08:59

标签: vb.net forms

当我尝试使用2个表单时遇到以下情况。我的工作流程如下:

(1)加载Form1

(2)点击button1上的Form1关闭Form1并点击Form2

解决方案A:如果我使用以下代码:

Dim oForm As New Form2
oForm.ShowDialog()
Me.Close()

然后Form1将位于Form2下(Form1仍会打开)。

解决方案B:如果我使用以下代码:

Dim oForm As New Form2
oForm.Show()
Me.Close()

然后Form1关闭,Form2打开,但Form1不在顶层。

我已经查看了解决方案,大多数建议解决方案B,但对我来说,两种解决方案都不会按照我想要的方式工作。谁能告诉我原因?

7 个答案:

答案 0 :(得分:3)

尝试

Dim oForm as New Form2

oForm.Show()

和form2的Load事件

Form1.Hide()

答案 1 :(得分:0)

如果你想看到前面的开场表格,请使用form.bringtofront(),我对你要做的事情感到困惑

答案 2 :(得分:0)

尝试这样做:

Dim oForm As New Form2()

Me.Hide()
oForm.ShowDialog()

Me.Close()

答案 3 :(得分:0)

我怀疑你正在建立一个登录对话......如果是这样,或类似的东西,试试这个..

首先打开您的主表单...(表单2),使用form2 showdialog(模态)form1 ...这将把form1放在form2的顶部。

添加一个属性到表单1,根据发生的情况设置它。例如,sucessfull login。

从自己的方法关闭表单1 ...(成功验证后),在关闭前设置属性。

在form2上,读取form1的这个属性,然后处理form1,然后决定要做什么......如果登录失败,再次显示登录表单,结束应用程序。如果成功,只需优雅地退出显示form1的方法。您的表单2现在是唯一打开的表单。

从Form2开始

<强> Form2_load

dim f1 as new form1
f1.showdialog
if f1.someproperty = somevalue then

 ' do something here, for instance, pop the form again, if you did not get what you were lookign for...

end if

'gracefully let the function end and form2 is now the only open form..

'dispose of form1. form1's close call does not dispose it, because it was opened modally. (showdialog)

f1.dispose
f1 = nothing

在form1中,根据您的操作,设置自定义属性并调用me.close,这将退出表单,并运行form2中的下一个代码。

答案 4 :(得分:0)

试试这个:

Dim oForm As New Form2

oForm.Show()

Me.Visible = False

你要关闭你的第一张表格,然后关闭你的程序。如果你让他看不见,他就不会被关闭。

答案 5 :(得分:0)

您想要在Form1被按下时关闭Form2并打开Button1,对吗?此代码适用于Button1中的Form1。你并没有说太多我不知道你到底想要做什么,但这是关闭Form并按{Form打开另一个Button的最简单方法。 1}},总是对我有用

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     Me.Close()
     Form2.Show()
End Sub

答案 6 :(得分:-1)

只需转到form2并编写Form1.hide()即可。我试图关闭form1,但它关闭了我的整个程序。

Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Form1.Hide()
    End Sub
End Class