将多窗体应用程序改造为仿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

相关文章
相关标签/搜索