這是由于你的啟動(dòng)類(lèi)是form1,也就是說(shuō)form1是你的主函數(shù),你關(guān)閉form1就相當(dāng)于關(guān)閉程序;
創(chuàng)新互聯(lián)公司是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),龍游網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍游等地區(qū)。龍游做網(wǎng)站價(jià)格咨詢(xún):18982081108
如果你只希望彈出form2的時(shí)候form1隱藏,可以再form2.show()之后調(diào)用form1.hide(),之后關(guān)閉form2的時(shí)候再關(guān)閉form1就可以達(dá)到你想要的效果了;
再有一種做法就是你需要一個(gè)主函數(shù)類(lèi),使用它調(diào)用form1跟form2,這樣關(guān)閉哪一個(gè)都不會(huì)影響另一個(gè)。
樓主,敢情您用的不是VB6啊~~是VB.NET~~~ 那就要加這個(gè)事件: Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If MsgBox("確定退出嗎?", MsgBoxStyle.YesNo) = MsgBoxResult.No Then e.Cancel = True End If End Sub 43295811的答案是對(duì)的 Form_QueryUnload 這個(gè)是一個(gè)事件。所謂事件也就是不用自己去調(diào)用的函數(shù),系統(tǒng)會(huì)在適當(dāng)?shù)臅r(shí)候調(diào)用它,你只要負(fù)責(zé)寫(xiě)這個(gè)函數(shù)的內(nèi)容就是了。所謂適應(yīng)的時(shí)候,像 QueryUnload 的話就是退出的時(shí)候,又在發(fā)生 Unload 事件之前。 如果不明白,就理解為一點(diǎn)擊X就會(huì)執(zhí)行Form_QueryUnload里面的代碼。 另外,這個(gè)函數(shù)聲明不是自己寫(xiě)的,編輯器會(huì)自己生成。你只要雙擊主窗體(不是運(yùn)行的時(shí)候喔),會(huì)進(jìn)入代碼編輯器,你再點(diǎn)擊代碼編輯器的右上角的下拉框,選擇 QueryUnload 就行了~~ 看到了吧,它就會(huì)自動(dòng)生成 Private Sub Form_Unload(Cancel As Integer) '... End Sub 如果不知道點(diǎn)哪里,那把上面那兩行復(fù)制到代碼編輯器也可以~~
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs)
MsgBox("窗口即將關(guān)閉....")
End Sub
Else
e.Cancel = True
End If
這像是以前 VB 的寫(xiě)法,VB.net 里不是這樣的,應(yīng)該是:
Private Sub Form_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
MagBox("1111")
End Sub
注意,... Handles MyBase.Closed 是在同一行里的。
this.close() 只是關(guān)掉,沒(méi)有釋放,不對(duì) me.close() 應(yīng)該釋放一下 me.Dispose() 給分吧、
首先這個(gè)應(yīng)該放在 FormClosing 事件中。
其次,因?yàn)槟?Else 之后沒(méi)有忽略窗體關(guān)閉的請(qǐng)求。
應(yīng)該再加一句 e.Cancel = True,表示告訴系統(tǒng),我取消關(guān)閉窗體這個(gè)操作了。