Re: [問題] Form一定要Application.run()嗎?
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
討論串 (同標題文章)