在咱們現有的ERP應用中,他是基於WinForm設計的,在早期的設計中,咱們每打開一個做業,就會新建一個窗口,就像這樣:安全
當咱們打開不少的做業時,用戶要經過Windows的任務欄慢慢找到,固然,若是僅僅這個問題,到還能忍受。關鍵是用戶會打開多個客戶端,好比一個客戶端登陸A公司,另一個客戶端登錄B公司,就算咱們在標題上添加公司信息,用戶也須要時間反應,使用體驗並很差。this
可能你首先想到MDI窗口,但你知道的,那是年代久遠的東西,如今沒有多少人願意看到那個古老的界面風格了。spa
大多數人但願相似Chrome的風格。設計
製做這個控件自己不是難點,難點在於如何讓之前的舊代碼安全的運行?例如舊的代碼中老是假設程序是運行在某個WinForm上,好比調用FindForm();code
因此個人技巧是:orm
一、創建一個無邊框的窗體(this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None),放一個TabControl;blog
二、當須要顯示一個子窗口時,將他也設計爲無邊框,而後嵌入到TabPage中,相似這樣:ip
Form2 f2 = new Form2(); f2.Dock = DockStyle.Fill; f2.TopLevel = false; TabPage p2 = new TabPage(f2.Text); p2.Controls.Add(f2); tabControl1.TabPages.Add(p2); f2.Show(); tabControl1.SelectTab(p2);
其中f2就是潛入的窗口,這樣看起來的效果就相似Chrome了,並且我執行FindForm是沒有問題的。get
示例代碼下載class