zoukankan      html  css  js  c++  java
  • 将多窗体应用程序改造为仿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是没有问题的。

    示例代码下载

  • 相关阅读:
    OpenCV中的绘图函数
    整理不错的opencv博客
    opencv中的函数
    这是一个学习前端技术的网站
    HDU1520 Anniversary party(树形DP入门)
    CF1255C League of Leesins(图论)
    HDU4725 The Shortest Path in Nya Graph(最短路分层)
    1288C Two Arrays
    CF1294D MEX maxiszing
    CF1295C Obtain the String
  • 原文地址:https://www.cnblogs.com/tansm/p/6807060.html
Copyright © 2011-2022 走看看