Re: [問題] Form一定要Application.run()嗎?

看板C_Sharp作者 (hamster)時間16年前 (2008/06/10 00:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
Application.Run() 跟 Form.ShowDialog() 很像,都是顯示視窗並進入訊息迴圈,所以 f1 會顯示是因為使用 fi.ShowDialog(),而且會在關閉時離開 ShowDialog 方法, 依此類推要顯示 f2 的就至少要呼叫 Application.Run(f2) 或 f2.ShowDialog() 其中一個。 不過 Application.Run 只能使用一次 (就是不能兩層以上的訊息迴圈),所以通常是程 式的第一個視窗或主視窗才會用 Application.Run(),其他視窗就用 ShowDialog()。 ※ 引述《teamspike (市政府7F)》之銘言: : hi各位大大,小弟又來囉 : 這次也是知道可以這樣用,卻不知道為什麼... : 小弟設計兩個form,分別是form1和form2 : 只是要實作一個簡單的登入系統 : 就form1是登入窗口,登入成功以後切換到form2這樣 : 假設form1的按鈕設計好了,則具體的實作方式是這樣的 : static void Main() : { : form1 f1 = new form1(); : if (f1.ShowDialog() == DialogResult.OK) //按下f1的確認鈕 : { : form2 f2 = new form2(); : System.Run(f2); : } : else : MessageBox.Show("Login failed."); : } : 這是可行的,而且f1在登入成功以後會自行消失,只剩下f2喔 : 非常符合小弟的需求。 : 問題來了, : System.Run()代表開始執行目前執行緒上的標準應用程式訊息迴圈, : 並顯示指定的表單。 : 1. f1只是把Form1實體化的一個物件,並沒有System.Run(f1); : 為什麼可以正常顯示,而且使用後自己消失呢? : 2. 如果把System.Run(f2)拿掉,執行時就不會出現f2喔, :   那f2為什麼就不能正常顯示呢? : 雖然可以執行,還是很龜毛的想要知道為什麼呢.....=.=a -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.70.12
文章代碼(AID): #18JLdvR1 (C_Sharp)
文章代碼(AID): #18JLdvR1 (C_Sharp)