標籤:
首先是我們進行視窗間的跳轉,尤其注意的是winform程式裡面的空間都是中安全執行緒的。但是注意的是如果你在一個線程中操縱另外的控制項,這時候會提示你一個錯誤,這個錯誤的解決方案準備單獨的在另一篇文章中來講。
好了,這時候回到主題上吧,怎麼來實現介面間的跳轉吧!假設我們想要從Form1跳轉到Form2,那麼可以有以下的集中方法:
1. 使用form的show屬性(註:show彈出來的是普通無模式表單,與下個要講的ShowDialog是有區別的)
Form2 frm=new Form2();
frm.show();
this.close(); //this 這兒是Form1對象,例如在跳轉到Form2後關閉釋放所持有的資源
this.Dispose(); //這也是為了釋放資源
註:Dispose()也是用來釋放資源的,但是不同的是如果表單屬於多重文件介面應用程式的一部分且是不可見的,那麼Close將不會釋放表單,從而我們必須自己手動調用Dispose來釋放表單資源。
還有要注意的是在無模式表單上調用Close方法時候,不能調用Show方法使得表單可見,因為表單的資源已經被釋放。所以若是要隱藏表單,那麼可以調用Control.Hide方法。
2.使用form的ShowDialog屬性
Form2 frm=new Form2();
frm.ShowDialog();
this.Dispose();
使用ShowDialog和show產生的表單到底有什麼不一樣呢?呵呵,其實ShowDialog彈出的表單是一種有模式的對話方塊,並且當前活動的表單為彈出的視窗的持有人。
表單和對話方塊要麼是有模式的,要麼是無模式的。“模式”表單或對話方塊必須關閉或隱藏,然後才能繼續使用應用程式的其餘部分
還有注意的是在多線程裡面,調用用showdialog方法可以避免線程的錯誤,具體原因也不是很清楚。
3.可以在Program.cs中做手腳
我們知道,Program裡面的程式是配置了我們整個應用程式的進入點。那麼就修改吧,
將以下的本來的代碼注釋掉:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new logForm());
改成:
Form logFrm = new logForm(); //為第一個顯示的表單
if (logFrm.ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm()); //為第二個要彈出的表單
}
然後只要在要跳轉的程式碼片段寫如下:
this.DialogResult = DialogResult.OK; //this 指向的是logForm
這樣就OK了。
winform程式中介面的跳轉問題