將多窗體應用程序改造爲仿Chrome形式的簡易方法

需求

在咱們現有的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

相關文章
相關標籤/搜索