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

需求

在我們現有的ERP應用中,他是基於WinForm設計的,在早期的設計中,我們每打開一個作業,就會新建一個窗口,就像這樣:

 當我們打開很多的作業時,用戶要通過Windows的任務欄慢慢找到,當然,如果僅僅這個問題,到還能忍受。關鍵是用戶會打開多個客戶端,比如一個客戶端登錄A公司,另外一個客戶端登陸B公司,就算我們在標題上添加公司信息,用戶也需要時間反應,使用體驗並不好。

 

解決方案

可能你首先想到MDI窗口,但你知道的,那是年代久遠的東西,現在沒有多少人願意看到那個古老的界面風格了。

大多數人希望類似Chrome的風格。

製作這個控件本身不是難點,難點在於如何讓以前的舊代碼安全的運行?例如舊的代碼中總是假設程序是運行在某個WinForm上,比如調用FindForm();

所以我的技巧是:

1、建立一個無邊框的窗體(this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None),放一個TabControl;

2、當需要顯示一個子窗口時,將他也設計爲無邊框,然後嵌入到TabPage中,類似這樣:

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是沒有問題的。

 

示例代碼下載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章