功能目标

使用Treeview控件实现点左边的节点,在右边显示相关的页面

知识点

Treeview

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

显示标记项的分层集合,每个标记项用一个 TreeNode 来表示。

private void InitializeTreeView()
{treeView1.BeginUpdate();treeView1.Nodes.Add("Parent");treeView1.Nodes[0].Nodes.Add("child1");treeView1.Nodes[0].Nodes.Add("child2");treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");treeView1.EndUpdate();
}

对应treeview控件的详细介绍,可参考另一篇文章

Form.MdiParent 属性

获取或设置此窗体的当前多文档界面 (MDI) 父窗体。

Windows 窗体应用程序中,经常会在一个窗体中打开另一个窗体, 通过窗体上的不同菜单选择不同的操作,这种在一个窗体中打开另一个窗体的方式可以通过设置 MDI 窗体的方式实现

MDI (Multiple Document Interface) 窗体被称为多文档窗体,它是很多 Windows 应用程序中常用的界面设计

MDI 窗体的设置并不复杂,只需要将窗体的属性 IsMdiContainer 设置为 True 即可。

this.IsMdiContainer = True;

案例介绍

创建 MDI 窗体,并在该窗体上设置菜单,包括打开文件、保存文件两个菜单项。

1.使用控件ContentMenuStrip,创建两个子菜单

2.在Form主窗体的ContentMenuStrip属性关联此控件,并在属性isMdiContainer修改为True.

3.子菜单事件代码编写。在每个子菜单的click事件中编写如下代码

//保存文件SaveFile sf = new SaveFile();sf.FormBorderStyle = FormBorderStyle.None;sf.MdiParent = this;sf.Show();
//打开文件OpenFile OpF = new OpenFile();OpF.FormBorderStyle = FormBorderStyle.None;OpF.MdiParent = this;OpF.Show();

遗留点

问题1:在MdiParent窗体调用子窗体时,如果返回父窗体,不知如何返回

问题2:嵌套系列,A作为父窗体,把B窗体作为子窗体,但B和C的关系,B相对于C属于父窗体,C属于子窗体。

知识延伸

子窗体和父窗体相互传值

SplitContainer

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

表示一个由可移动条组成的控件,该可移动条将容器的显示区域分成两个大小可调的面板。

操作步骤

画面组态

  • 添加Treeview和splitcontainer控件。

  • 创建四个画面,四个画面的name属性分别为:xiaomi、huawei、BWM、benchi;

代码编写

  • 目录树代码编写,创建两个父节点,汽车和手机,其中汽车父节点下面有奔驰和宝马两个子节点。手机父节点下面有小米和华为两个子节点。

    代码触发事件为窗体的加载(Load)

    private void Form1_Load(object sender, EventArgs e){TreeNode tn1 = new TreeNode("手机");TreeNode tn2 = new TreeNode("汽车");tn1.Nodes.Add("小米");tn1.Nodes.Add("华为");tn2.Nodes.Add("宝马");tn2.Nodes.Add("奔驰");treeView1.Nodes.Add(tn1);treeView1.Nodes.Add(tn2);}
    
  • 点击目录树上子节点,获取Treeview控件的selectnode属性的text文本值,根据text文本值的不同,进行画面切换其中text文本代表节点的内容。画面进行切换,画面显示则利用splitcontainer控件。

     private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){switch (treeView1.SelectedNode.Text){case "小米":splitContainer1.Panel2.Controls.Clear();xiaomi xm = new xiaomi();//xm.MdiParent = this;xm.Dock = DockStyle.Fill;xm.FormBorderStyle = FormBorderStyle.None;xm.TopLevel = false;xm.Parent = this.splitContainer1.Panel2;xm.Show();break;case "华为":splitContainer1.Panel2.Controls.Clear();huawei hw = new huawei();hw.Dock = DockStyle.Fill;hw.FormBorderStyle = FormBorderStyle.None;hw.TopLevel = false;hw.Parent = this.splitContainer1.Panel2;hw.Show();break;case "宝马":splitContainer1.Panel2.Controls.Clear();BWM bwm = new BWM();bwm.Dock = DockStyle.Fill;bwm.FormBorderStyle = FormBorderStyle.None;bwm.TopLevel = false;bwm.Parent = this.splitContainer1.Panel2;bwm.Show();break;case "奔驰":splitContainer1.Panel2.Controls.Clear();benchi bz = new benchi();bz.Dock = DockStyle.Fill;bz.FormBorderStyle = FormBorderStyle.None;bz.TopLevel = false;bz.Parent = this.splitContainer1.Panel2;bz.Show();break;}}
    

动画演示

C#实现目录跳转(TreeView和SplitContainer)相关推荐

  1. Linux,OS X mark工具(目录跳转工具)

    转帖请注明出处  林夕木大大 在命令行里进行一些操作时,经常会遇到在多个目录之间来回切换的情况.这个时候就会很是苦恼.所以在网上搜索一番后总结如下: Ubuntu/CentOS: 编辑 .bash_p ...

  2. linux目录跳转指令

    1.查看当前目录 pwd  2.跳转至 绝对路径 会从根目录/ 开始跳转.每个目录之间用/隔开 你跳转的目录知道完整目录就用这个 开头带 / cd /目录名       //例如:  cd /var/ ...

  3. linux目录跳转快捷方式——z武器

    原文链接:http://www.the5fire.com/linux-cd-z.html 在学python的时候,老师用z 加dirname完成了目录的切换,切换目录之快,命令之简洁,当时很惊讶.li ...

  4. linux复制文件跳过相同,Linux中拷贝目录跳过指定文件的方法

    近日在 Linux 环境中做版本迁移的时候遇到一个问题:需要将一个目录遍历拷贝到另一个目录中,但需要忽略其中的某些文件,由于目录中东西比较多,忽略的项也不好一一指定.普通的 cp 命令并没有排除某个文 ...

  5. CSDN:写博客时怎么添加文章目录,然后点击目录跳转到对应的内容目录?

    文章目录 目录一 目录二 目录三 文章目录 目录一 目录二 目录三 自定义目录 目录一 目录二 目录三 @[TOC]不区分大小写,默认显示:文章目录,如果需要更改,在后面加上英文括号. 下面需要跳转的 ...

  6. markdown 链接跳转到标题_markdown中锚链接实现目录跳转以及注意事项

    当文章有分类,需要快速阅读,通常会先在文首部写一个目录,点击可以跳转. 为文章写目录,特别在文章较长的时候,有助于对内容的整体把握,能提高阅读效率. 以下,将写一个基本的锚目录demo,然后特别说明需 ...

  7. linux快速目录跳转,一款快速跳转目录的小工具—autojump

    前言 开发过程中,我们免不了要经常切换目录.如果是在linux系统或者mac上,则要经常使用cd.如果目录层级比较深,一连串的cd加tab,很容易让人厌烦.这里推荐一款好用的跳转小工具-autojum ...

  8. linux目录跳到目录,linux目录跳转快捷方式——z武器

    在学python的时候,老师用z 加dirname完成了目录的切换,切换目录之快,命令之简洁,当时很惊讶.linux下有这个命令吗,怎么没有听说过. 之前是大量的cd.table操作(cd 然后打出目 ...

  9. linux目录跳转的好武器z.sh

    中午刷微博时看到一篇有关z.sh的介绍. 众所周知,在linux系统中进入目录都是用cd命令的,若是一般的开发人员,进入服务器的目的明确,每次都是进入服务器中的项目配置目录,同时要在好几个目录中来回跳 ...

  10. linux在多个目录跳转,如何做到在多个目录直接游刃有余的进行切换 -- linux 下的目录切换...

    一,为何要使用这几个命令? 可能大家会有疑问,为何要使用这几个命令, 难道用cd不就可以切换目录了吗? 没错,使用cd就可以切换到需要访问的目录, 但是有时会是一个路径很长,层次很多的目录,进到此目录 ...

最新文章

  1. HarmonyOS UI 开发 vp ,fp , px 以及写具体数字的 理解
  2. UA MATH567 高维统计 专题0 为什么需要高维统计理论?——协方差估计的高维效应与Marcenko-Pastur规则
  3. 从NoSQL到Lakehouse,Apache Doris的13年技术演进之路
  4. 美学设计评价_死亡的孩子无法使用的设计美学
  5. 数字电路技术可能出现的简答题_2013年9月份考试数字电子技术第二次作业
  6. python能做什么-普通小白学会Python到底具体能做什么呢?
  7. 汽车维修企业管理【1】
  8. 显微镜自动聚焦原理是什么_激光共聚焦显微镜系统的原理和应用讲解
  9. LeetCode Hard难度题目题解汇总(5/150)
  10. mysql之my.cnf
  11. 制造业和物流行业的WMS系统差别在哪?
  12. stm32-beep蜂鸣器-手把手教学(如何使用原理图)
  13. Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录
  14. CososCreator (Android)-AppLovin MAX 广告聚合平台接入+Firebase统计
  15. Android签名与校验过程详解
  16. 大一下实验总结(三)
  17. Android系统判断CPU是32位还是64位
  18. 飞行员兄弟 JAVA题解
  19. Python3+pygame中国象棋 代码完整 非常好 有效果演示
  20. 哈工大软件构造 Git使用

热门文章

  1. 峰值性噪比matlab,PSNR峰值信噪比matlab实现
  2. 单片机控制步进电机正反转c语言程序,单片机控制步进电机1步10步100步正反转...
  3. 小米10青春版刷鸿蒙,没有高刷弱不禁风?小米10青春版刷新低价,这次用户或许会满意!...
  4. android phone驱动 华为,华为智能手机USB驱动
  5. EasyRecovery2022版支持电脑, 硬盘, U盘, 内存卡, 回收站等设备数据恢复
  6. C语言输入一个三位数,并将其逆序
  7. 基于MATLAB产生式系统(植物识别系统)
  8. linux中tar命令怎么用,linux tar命令使用详解
  9. AVR单片机(ATmega128)单片机运算乘除法大约所需时间
  10. Anaconda3下YOLOV3火焰检测