将多窗体应用程序改造为仿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是没有问题的。
将多窗体应用程序改造为仿Chrome形式的简易方法的更多相关文章
- Delphi中无边框窗体应用程序使任务栏右键菜单有效的方法
最近在Delphi开发中用到了无边框窗体显示时,无法在任务栏使用右键弹出菜单的情况,经过整理,通过以下方法可以使右键菜单出现: procedure Tfrm_Base.InitSysMenu;var ...
- Java Swing快速构建窗体应用程序
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
- Windows窗体应用程序(非Console)使用libuv实现简单的异步WEB服务器
libuv是一个很强大的异步处理框架(严格意义上不能叫框架,其实就是一组异步函数库,当然框架这东西有各种各样的定义和理解_^...),最初的的目的是用于NODEJS的异步处理,不过因为它是一个独立的项 ...
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子
C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...
- 第一章 C#入门 (Windows窗体应用程序)(三)
[案例] 编写一个Windows窗体应用程序,窗体上有一个文本框和两个按钮([显示]和[清除]按钮). 单击[显示]时,文本框的背景变为蓝色并且居中显示“努力学习C#”: 单击[清除]按钮,文本框的背 ...
- 第一章 C#入门(Windows窗体应用程序)(二)
C#窗体应用程序(二) [案例]设计登录界面,效果如下: [案例实现步骤] 1.新建项目(Windows控制台应用程序 文件→新建→项目:选择“项目类型”为Visual C#,“模板”为Windows ...
- 第一章 C#入门 (Windows窗体应用程序)(一)
我的第一个窗体应用程序(一) [案例说明] 在文本框中显示一行文字“Hello C#!”,单击[显示]按钮后在文本框中显示文字:单击[清除]按钮后清除文本框中的内容. [案例实现步骤] 1.新建项目 ...
- 窗体应用程序防腾讯QQ源码
窗体应用程序防腾讯QQ源码 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
随机推荐
- Linq组合查询与分页组合查询结合
1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox& ...
- 从centos镜像创建maven仓库
创建镜像 1. 使用centos7作为基础镜像2. 将jdk1.8(官方要求1.8)和nexus3解压后的两个文件放进cp进去3. export环境变量后启动一下试一试4. docker commit ...
- 使用 lsyncd 同步文件
https://unix.stackexchange.com/questions/307046/real-time-file-synchronization https://github.com/ax ...
- redis使用总结(二)(jedis使用)
Jedis使用(Jedis中的API和redis的指令基本相同) 1.创建maven工程,在pom文件中导入jedis的坐标 <dependency> <groupId>red ...
- Django 中 form 介绍
目录 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...
- 关于Python的协程问题总结
协程其实就是可以由程序自主控制的线程 在python里主要由yield 和yield from 控制,可以通过生成者消费者例子来理解协程 利用yield from 向生成器(协程)传送数据# 传统的生 ...
- C# 开发AliYun(阿里云) 小蜜调用接口代码
using System; using System.Collections.Generic; using Aliyun.Acs.Core; using Aliyun.Acs.Core.Excepti ...
- 02:安装 Kerberos
1.1 环境介绍 参考博客:https://www.cnblogs.com/xiaodf/p/5968178.html https://www.douban.com/note/701660289/ ...
- 富文本编辑器Quill(二)上传图片与视频
image与video在Quill formats中属于Embeds,要在富文本中插入图片或者视频需要使用insertEmbed api. insertEmbed insertEmbed(index: ...
- 20165306 Exp4 恶意代码分析
Exp4 恶意代码分析 一.实践概述 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生 ...