MDI窗体(附示例)

简介:

前言

  在做winfrom项目的时候我们可能会用到嵌套窗体,就是说一个容器中有多个窗体,可以分别管理和应用这些窗体,.net中提供了一种机制就是MDI,可能大家都会用,这边就简单的介绍下。

简单应用

  winfrom中怎么用MDI呢,其实只要设置窗体的一个属性就可以了:

  IsMdiContainer属性设置为true就表示该窗体为MDI窗体,很简单,那我们可以在窗体加载的时候这些写:

复制代码
 1         private void Form1_Load(object sender, EventArgs e)
 2         {
 3             Form childForm1 = new Form();
 4             childForm1.Text = "窗口1";
 5             childForm1.MdiParent = this;
 6             childForm1.Show();
 7 
 8             Form childForm2 = new Form();
 9             childForm2.Text = "窗口2";
10             childForm2.MdiParent = this;
11             childForm2.Show();
12         }
复制代码

  childForm1.MdiParent = this;这句代码的意思就是设置子窗体的MDI父窗体为本窗体,看下运行效果:

基本方法

  关于MDI相关的方法主要是窗体的布局方法LayoutMdi(),参数是MdiLayout枚举:

  成员名称 说明
  ArrangeIcons 所有 MDI 子图标均排列在 MDI 父窗体的工作区内。
  Cascade 所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。
  TileHorizontal 所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。
  TileVertical 所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。

  LayoutMdi(MdiLayout.Cascade);效果:

  LayoutMdi(MdiLayout.TileHorizontal);效果:

仿Notepad小程序

  我们在办公的时候可能都用过Notepad++,很方便,其实Notepad++里面的窗体就有点MDI的感觉:

  我们也可以利用MDI做出类似的感效果,Notepad++是文本编辑器,里面每个窗体其实就是单独的Notepad,首先我们需要先建一个文件编辑器的窗体,其实就是一个RichTextBox控件,因为RichTextBox控件是富文本编辑器,所以我们可以进行字体和颜色的调整,调整字体和颜色用的是winfrom的组件,关于文本编辑器就不详述了,贴下代码:

  View Code

  文件编辑器做好了,下面就是主窗体,首先IsMdiContainer属性设置为true,在上面我们加下菜单:

  新建Notepad的代码:

复制代码
1         private void tsmiNewTxt_Click(object sender, EventArgs e)
2         {
3             NotepadForm childForm = new NotepadForm();
4             childForm.Text = "新建文本文档.txt";
5             childForm.MdiParent = this;
6             childForm.Show();
7         }
复制代码

  运行效果:



本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/3547577.html,如需转载请自行联系原作者

相关文章
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
8687 4
|
8月前
|
存储 缓存 API
电商行业中 API 接口的常见问题和解决方法
本文探讨了电商行业中API接口的常见问题及解决方法。涵盖数据准确性(如数据不一致、数据缺失)、性能问题(如响应时间过长、吞吐量不足)、安全问题(如身份认证与授权、数据泄露风险)和兼容性问题(如接口版本兼容性、系统兼容性)。通过优化数据同步机制、缓存策略、网络配置、服务器负载均衡、代码逻辑,以及采用安全的身份认证方式和加密技术,结合实际代码示例,帮助开发者提升API接口的稳定性和安全性,确保电商业务顺利运行。
374 11
|
6月前
|
机器学习/深度学习 人工智能 SDN
《重塑数据中心网络架构,迎接人工智能算力浪潮》
在人工智能快速发展的背景下,数据中心作为算力核心,其网络架构优化至关重要。传统三层架构因延迟高、扩展性差已难以满足AI需求。叶脊架构通过扁平化设计减少延迟并提升扩展性,高速网络技术(如100Gbps/400Gbps以太网)提供更大带宽,SDN与网络虚拟化实现灵活资源分配,优化流量管理进一步提高效率。未来,量子通信和边缘计算等技术将推动数据中心网络持续演进,助力AI算力提升,为社会带来更多变革。
254 9
|
11月前
|
存储 关系型数据库 MySQL
介绍一下MySQL的一些应用场景
【10月更文挑战第17天】介绍一下MySQL的一些应用场景
2375 0
|
机器学习/深度学习 人工智能 搜索推荐
未来科技趋势有哪些?
【7月更文挑战第9天】未来科技趋势有哪些?
702 2
|
9月前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
1059 30
|
10月前
|
监控 前端开发 Java
Java SpringBoot –性能分析与调优
Java SpringBoot –性能分析与调优
|
SQL Java 数据库
10、MyBatis-Plus 多数据源
这篇文章介绍了在MyBatis-Plus中实现多数据源的方法,包括创建不同的数据库和表、引入动态数据源依赖、配置多个数据源、创建用户和商品的Service类,以及如何进行测试来验证多数据源的功能。
|
11月前
|
数据处理
MoE再下一城!港大提出AnyGraph:首次开启图大模型Scaling Law之路
近年来,图结构数据因关系数据的广泛应用而备受关注,但现有模型在处理复杂图数据时需大量微调,灵活性受限。香港大学团队提出了AnyGraph,一种基于图混合专家(MoE)架构的统一图模型,有效应对结构与特征异质性、快速适应及规模定律挑战。通过多样化图专家与轻量级路由机制,AnyGraph实现零样本学习和跨领域数据处理。然而,其计算复杂度较高且路由机制仍有待优化。(239字)
155 2